diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-07-27 00:47:52 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-07-27 00:47:52 +0000 |
commit | 979f098cfa808cc9236b39658cc3757a39dfa459 (patch) | |
tree | 919fa7ebf59d3681dc76bcea9fee9d0ed21b58cf | |
parent | e3fd87c18b865a1bf61d3b977051580f9315f2a5 (diff) |
[analyzer] Use a stack-based local AGAIN to fix the build for real.
It's a good thing CallEvents aren't created all over the place yet.
I checked all the uses this time and the private copy constructor
/really/ shouldn't cause any more problems.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160845 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp index a83fb54144..0392a2490f 100644 --- a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp @@ -400,21 +400,26 @@ void ExprEngine::VisitCallExpr(const CallExpr *CE, ExplodedNode *Pred, // Evaluate the call. switch (K) { - case CE_Function: - evalCall(dstCallEvaluated, *I, FunctionCall(CE, State, LCtx)); + case CE_Function: { + FunctionCall Call(CE, State, LCtx); + evalCall(dstCallEvaluated, *I, Call); break; - case CE_CXXMember: - evalCall(dstCallEvaluated, *I, CXXMemberCall(cast<CXXMemberCallExpr>(CE), - State, LCtx)); + } + case CE_CXXMember: { + CXXMemberCall Call(cast<CXXMemberCallExpr>(CE), State, LCtx); + evalCall(dstCallEvaluated, *I, Call); break; - case CE_CXXMemberOperator: - evalCall(dstCallEvaluated, *I, - CXXMemberOperatorCall(cast<CXXOperatorCallExpr>(CE), - State, LCtx)); + } + case CE_CXXMemberOperator: { + CXXMemberOperatorCall Call(cast<CXXOperatorCallExpr>(CE), State, LCtx); + evalCall(dstCallEvaluated, *I, Call); break; - case CE_Block: - evalCall(dstCallEvaluated, *I, BlockCall(CE, State, LCtx)); + } + case CE_Block: { + BlockCall Call(CE, State, LCtx); + evalCall(dstCallEvaluated, *I, Call); break; + } default: llvm_unreachable("Non-CallExpr CallEventKind"); } |