Better handling of calls to functions via function pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47562 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/GRExprEngine.cpp b/Analysis/GRExprEngine.cpp
index dedeb7b..4e6d1a3 100644
--- a/Analysis/GRExprEngine.cpp
+++ b/Analysis/GRExprEngine.cpp
@@ -429,14 +429,16 @@
 
   // If we reach here we have processed all of the arguments.  Evaluate
   // the callee expression.
-  NodeSet DstTmp;  
-  Visit(CE->getCallee(), Pred, DstTmp);
+  NodeSet DstTmp;    
+  Expr* Callee = CE->getCallee()->IgnoreParenCasts();
+  
+  VisitLVal(Callee, Pred, DstTmp);
   
   // Finally, evaluate the function call.
   for (NodeSet::iterator DI = DstTmp.begin(), DE = DstTmp.end(); DI!=DE; ++DI) {
 
     StateTy St = (*DI)->getState();    
-    RVal L = GetLVal(St, CE->getCallee());
+    RVal L = GetLVal(St, Callee);
 
     // Check for uninitialized control-flow.