handle CXXFunctionalCastExpr in visitLValue and Environment.

llvm-svn: 120143
diff --git a/clang/lib/Checker/Environment.cpp b/clang/lib/Checker/Environment.cpp
index b09cb9d..798f9ba 100644
--- a/clang/lib/Checker/Environment.cpp
+++ b/clang/lib/Checker/Environment.cpp
@@ -78,6 +78,10 @@
       case Stmt::CXXBindTemporaryExprClass:
         E = cast<CXXBindTemporaryExpr>(E)->getSubExpr();
         continue;
+
+      case Stmt::CXXFunctionalCastExprClass:
+        E = cast<CXXFunctionalCastExpr>(E)->getSubExpr();
+        continue;
         
       // Handle all other Stmt* using a lookup.
       default:
diff --git a/clang/lib/Checker/GRExprEngine.cpp b/clang/lib/Checker/GRExprEngine.cpp
index 2181b70..6db8dba 100644
--- a/clang/lib/Checker/GRExprEngine.cpp
+++ b/clang/lib/Checker/GRExprEngine.cpp
@@ -1158,6 +1158,18 @@
       break;
     }
 
+    case Stmt::CXXConstructExprClass: {
+      const CXXConstructExpr *expr = cast<CXXConstructExpr>(Ex);
+      VisitCXXConstructExpr(expr, 0, Pred, Dst, true);
+      break;
+    }
+
+    case Stmt::CXXFunctionalCastExprClass: {
+      const CXXFunctionalCastExpr *expr = cast<CXXFunctionalCastExpr>(Ex);
+      VisitLValue(expr->getSubExpr(), Pred, Dst);
+      break;
+    }
+
     case Stmt::CXXTemporaryObjectExprClass: {
       const CXXTemporaryObjectExpr *expr = cast<CXXTemporaryObjectExpr>(Ex);
       VisitCXXTemporaryObjectExpr(expr, Pred, Dst, true);