https://github.com/steakhal updated https://github.com/llvm/llvm-project/pull/125283
>From b9544eb08f48c10d2ad16ce2ce9a8c9b84c2aaf5 Mon Sep 17 00:00:00 2001 From: Balazs Benics <benicsbal...@gmail.com> Date: Fri, 31 Jan 2025 21:10:00 +0100 Subject: [PATCH 1/2] [clang][NFC] Simplify code in ExprMutationAnalyzer --- clang/lib/Analysis/ExprMutationAnalyzer.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/clang/lib/Analysis/ExprMutationAnalyzer.cpp b/clang/lib/Analysis/ExprMutationAnalyzer.cpp index d7b44149d0fc4b..93376eb9b93c72 100644 --- a/clang/lib/Analysis/ExprMutationAnalyzer.cpp +++ b/clang/lib/Analysis/ExprMutationAnalyzer.cpp @@ -813,10 +813,7 @@ FunctionParmMutationAnalyzer::findMutation(const ParmVarDecl *Parm) { // before analyzing parameters of A. Then when analyzing the second "call A", // FunctionParmMutationAnalyzer can use this memoized value to avoid infinite // recursion. - Results[Parm] = nullptr; - if (const Stmt *S = BodyAnalyzer.findMutation(Parm)) - return Results[Parm] = S; - return Results[Parm]; + return Results[Parm] = BodyAnalyzer.findMutation(Parm); } } // namespace clang >From 2f48b57d76b472d8494d89bbfabd2907d6d9479c Mon Sep 17 00:00:00 2001 From: Balazs Benics <benicsbal...@gmail.com> Date: Fri, 31 Jan 2025 21:28:01 +0100 Subject: [PATCH 2/2] Use try_emplace --- clang/lib/Analysis/ExprMutationAnalyzer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/clang/lib/Analysis/ExprMutationAnalyzer.cpp b/clang/lib/Analysis/ExprMutationAnalyzer.cpp index 93376eb9b93c72..8944343484e583 100644 --- a/clang/lib/Analysis/ExprMutationAnalyzer.cpp +++ b/clang/lib/Analysis/ExprMutationAnalyzer.cpp @@ -806,14 +806,15 @@ FunctionParmMutationAnalyzer::FunctionParmMutationAnalyzer( const Stmt * FunctionParmMutationAnalyzer::findMutation(const ParmVarDecl *Parm) { - const auto Memoized = Results.find(Parm); - if (Memoized != Results.end()) - return Memoized->second; + auto [Place, Inserted] = Results.try_emplace(Parm); + if (!Inserted) + return Place->second; + // To handle call A -> call B -> call A. Assume parameters of A is not mutated // before analyzing parameters of A. Then when analyzing the second "call A", // FunctionParmMutationAnalyzer can use this memoized value to avoid infinite // recursion. - return Results[Parm] = BodyAnalyzer.findMutation(Parm); + return Place->second = BodyAnalyzer.findMutation(Parm); } } // namespace clang _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits