[clang] [clang][mutation analyzer][NFC] Simplify code in ExprMutationAnalyzer (PR #125283)

Kazu Hirata via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 31 12:25:10 PST 2025


================
@@ -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);
----------------
kazutakahirata wrote:

We have the following a few lines above:

```
  const auto Memoized = Results.find(Parm);
  if (Memoized != Results.end())
    return Memoized->second;
```

Could we turn that into something like this and use the iterator from `try_emplace`?

```
  auto [Memoized, Inserted] = Results.try_emplace(Parm);
  if (!Inserted)
    return Memoized->second;

  Memoized->second = ...;
```

Maybe we should rename `Memorized`.  The name would sound strange if the insertion is successful.


https://github.com/llvm/llvm-project/pull/125283


More information about the cfe-commits mailing list