diff options
-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"); } |