But I am marking the leaf expressions as "live". See the inline comments. You
really recurse down until you reach a non-logical-operator expression.
That said, I can see now how the function name can be misleading. The
intended reading was "mark logical expression operands live", but it does sound
too much like "mark logical operations". I guess I'll change that into
something else.
================
Comment at: lib/Analysis/LiveVariables.cpp:351
@@ -348,3 +350,3 @@
void TransferFunctions::VisitBinaryOperator(BinaryOperator *B) {
if (B->isAssignmentOp()) {
----------------
If I am a binary operator
================
Comment at: lib/Analysis/LiveVariables.cpp:384
@@ +383,3 @@
+ return;
+
+ const Expr *LHS = BO->getLHS()->IgnoreParens();
----------------
I am a logical operator
================
Comment at: lib/Analysis/LiveVariables.cpp:386
@@ +385,3 @@
+ const Expr *LHS = BO->getLHS()->IgnoreParens();
+ const Expr *RHS = BO->getRHS()->IgnoreParens();
+
----------------
Get the left and right hand side operands.
================
Comment at: lib/Analysis/LiveVariables.cpp:389
@@ +388,3 @@
+ val.liveStmts = LV.SSetFact.add(val.liveStmts, LHS);
+ val.liveStmts = LV.SSetFact.add(val.liveStmts, RHS);
+
----------------
Mark them as live.
================
Comment at: lib/Analysis/LiveVariables.cpp:392
@@ +391,3 @@
+ MarkLogicalOpsLive(LHS);
+ MarkLogicalOpsLive(RHS);
+}
----------------
Recurse down to mark their children as well (if LHS and RHS happen to be
logical operators again. otherwise the recursion stops.)
http://llvm-reviews.chandlerc.com/D1340
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits