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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143797 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/LiveVariables.cpp b/lib/Analysis/LiveVariables.cpp
index 69b0933..cd6f09f 100644
--- a/lib/Analysis/LiveVariables.cpp
+++ b/lib/Analysis/LiveVariables.cpp
@@ -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;
 }