summaryrefslogtreecommitdiffstats
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
commit76a2e985c34acbfad1ed21befccfd650cb94fa6c (patch)
tree6ba4c98b8ce56cd97bb677946e0a9c584600ca91
parent39321aa1990c595bcf5a7b071a9efd16194b23ed (diff)
downloadbcm5719-llvm-76a2e985c34acbfad1ed21befccfd650cb94fa6c.tar.gz
bcm5719-llvm-76a2e985c34acbfad1ed21befccfd650cb94fa6c.zip
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. llvm-svn: 47650
-rw-r--r--clang/Analysis/GRExprEngine.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/Analysis/GRExprEngine.cpp b/clang/Analysis/GRExprEngine.cpp
index c911064b99f..4b1e99e8157 100644
--- a/clang/Analysis/GRExprEngine.cpp
+++ b/clang/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)
OpenPOWER on IntegriCloud