aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-02-27 00:44:11 +0000
committerTed Kremenek <kremenek@apple.com>2008-02-27 00:44:11 +0000
commita6fbe8068442980de456c86a641a7be83ce31f64 (patch)
treed7c94097226aa082adc1e264e4269f7f5ee8c5e4
parenta9d996dbeb719200c4a9d86f68166a237583025f (diff)
Fixed bug in the core transfer function logic for CallExprs where we would
sometimes skip evaluating all the arguments when some arguments would not create new ExplodedNodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47650 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Analysis/GRExprEngine.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/Analysis/GRExprEngine.cpp b/Analysis/GRExprEngine.cpp
index c911064b99..4b1e99e815 100644
--- a/Analysis/GRExprEngine.cpp
+++ b/Analysis/GRExprEngine.cpp
@@ -490,7 +490,10 @@ void GRExprEngine::VisitCall(CallExpr* CE, NodeTy* Pred,
if (AI != AE) {
NodeSet DstTmp;
+
Visit(*AI, Pred, DstTmp);
+ if (DstTmp.empty()) DstTmp.Add(Pred);
+
++AI;
for (NodeSet::iterator DI=DstTmp.begin(), DE=DstTmp.end(); DI != DE; ++DI)