[clang] [clang][mutation analyzer][NFC] Simplify code in ExprMutationAnalyzer (PR #125283)
Balazs Benics via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 31 12:30:00 PST 2025
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 <benicsbalazs at 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 <benicsbalazs at 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
More information about the cfe-commits
mailing list