diff options
Diffstat (limited to 'gnu/llvm/tools/clang/lib/Analysis/Consumed.cpp')
| -rw-r--r-- | gnu/llvm/tools/clang/lib/Analysis/Consumed.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gnu/llvm/tools/clang/lib/Analysis/Consumed.cpp b/gnu/llvm/tools/clang/lib/Analysis/Consumed.cpp index 9df23923b01..47bef1b927c 100644 --- a/gnu/llvm/tools/clang/lib/Analysis/Consumed.cpp +++ b/gnu/llvm/tools/clang/lib/Analysis/Consumed.cpp @@ -466,9 +466,15 @@ class ConsumedStmtVisitor : public ConstStmtVisitor<ConsumedStmtVisitor> { MapType PropagationMap; InfoEntry findInfo(const Expr *E) { + if (auto Cleanups = dyn_cast<ExprWithCleanups>(E)) + if (!Cleanups->cleanupsHaveSideEffects()) + E = Cleanups->getSubExpr(); return PropagationMap.find(E->IgnoreParens()); } ConstInfoEntry findInfo(const Expr *E) const { + if (auto Cleanups = dyn_cast<ExprWithCleanups>(E)) + if (!Cleanups->cleanupsHaveSideEffects()) + E = Cleanups->getSubExpr(); return PropagationMap.find(E->IgnoreParens()); } void insertInfo(const Expr *E, const PropagationInfo &PI) { @@ -1356,7 +1362,7 @@ void ConsumedAnalyzer::run(AnalysisDeclContext &AC) { ConsumedStmtVisitor Visitor(AC, *this, CurrStates.get()); // Add all trackable parameters to the state map. - for (const auto *PI : D->params()) + for (const auto *PI : D->parameters()) Visitor.VisitParmVarDecl(PI); // Visit all of the function's basic blocks. |
