[cfe-commits] r143797 - /cfe/trunk/lib/Analysis/LiveVariables.cpp

Ted Kremenek kremenek at apple.com
Sat Nov 5 00:34:29 PDT 2011


Author: kremenek
Date: Sat Nov  5 02:34:28 2011
New Revision: 143797

URL: http://llvm.org/viewvc/llvm-project?rev=143797&view=rev
Log:
Tweak LookThroughStmt() in LiveVariables to properly look through alternativing ParenExprs and OpaqueValueExprs.  Thanks to Anna and Argiris for iterating on this function.  My original patch embarssingly didn't even pass the Clang tests.

Modified:
    cfe/trunk/lib/Analysis/LiveVariables.cpp

Modified: cfe/trunk/lib/Analysis/LiveVariables.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/LiveVariables.cpp?rev=143797&r1=143796&r2=143797&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/LiveVariables.cpp (original)
+++ cfe/trunk/lib/Analysis/LiveVariables.cpp Sat Nov  5 02:34:28 2011
@@ -232,10 +232,15 @@
 }
 
 static const Stmt *LookThroughStmt(const Stmt *S) {
-  if (const OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(S))
-    return OVE->getSourceExpr()->IgnoreParens();
-  if (const Expr *E = dyn_cast<Expr>(S))
-    return E->IgnoreParens();
+  while (S) {
+    if (const Expr *Ex = dyn_cast<Expr>(S))
+      S = Ex->IgnoreParens();    
+    if (const OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(S)) {
+      S = OVE->getSourceExpr();
+      continue;
+    }
+    break;
+  }
   return S;
 }
 





More information about the cfe-commits mailing list