diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp | 27 | 
1 files changed, 16 insertions, 11 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp index a83fb541444..0392a2490f0 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp +++ b/clang/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");      }  | 

