diff --git a/clang/lib/AST/Interp/Interp.h b/clang/lib/AST/Interp/Interp.h --- a/clang/lib/AST/Interp/Interp.h +++ b/clang/lib/AST/Interp/Interp.h @@ -201,13 +201,14 @@ return false; } + assert(S.Current); assert(S.Current->getFrameOffset() == S.Stk.size() && "Invalid frame"); if (!S.checkingPotentialConstantExpression() || S.Current->Caller) { // Certain builtin functions are declared as func-name(...), so the // parameters are checked in Sema and only available through the CallExpr. // The interp::Function we create for them has 0 parameters, so we need to // remove them from the stack by checking the CallExpr. - if (S.Current && S.Current->getFunction()->needsRuntimeArgPop(S.getCtx())) + if (S.Current->getFunction()->needsRuntimeArgPop(S.getCtx())) popBuiltinArgs(S, PC); else S.Current->popArgs(); diff --git a/clang/lib/Analysis/ThreadSafety.cpp b/clang/lib/Analysis/ThreadSafety.cpp --- a/clang/lib/Analysis/ThreadSafety.cpp +++ b/clang/lib/Analysis/ThreadSafety.cpp @@ -1008,7 +1008,7 @@ threadSafety::SExprBuilder SxBuilder; ThreadSafetyHandler &Handler; - const CXXMethodDecl *CurrentMethod; + const CXXMethodDecl *CurrentMethod = nullptr; LocalVariableMap LocalVarMap; FactManager FactMan; std::vector BlockInfo;