Short Circuit Evaluation Split Nodes whenever an early jump is possible by short circuiting boolean operations. Nodes are split after conservatively checking for side effects, which include definition of multi block variables, function calls and instructions involving memory. BUG=None R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2069923004 .
diff --git a/src/IceClFlags.def b/src/IceClFlags.def index 7488698..bd0c20f 100644 --- a/src/IceClFlags.def +++ b/src/IceClFlags.def
@@ -140,13 +140,16 @@ "information to stdout at the end of program execution."), \ cl::init(false)) \ \ - X(EnableExperimental, bool, dev_opt_flag, "enable-experimental", \ + X(EnableExperimental, bool, dev_opt_flag, "enable-experimental", \ cl::desc("Enable Optimizations not yet part of O2"), \ cl::init(false)) \ \ X(EnablePhiEdgeSplit, bool, dev_opt_flag, "phi-edge-split", \ cl::desc("Enable edge splitting for Phi lowering"), cl::init(true)) \ \ + X(EnableShortCircuit, bool, dev_opt_flag, "enable-sc", \ + cl::desc("Split Nodes for short circuit evaluation"), cl::init(false)) \ + \ X(ExcludedRegisters, std::string, dev_list_flag, "reg-exclude", \ cl::CommaSeparated, cl::desc("Don't use specified registers")) \ \