Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[analyzer][NFC] Remove a redundant container lookup #125064

Merged
merged 1 commit into from
Jan 30, 2025

Conversation

steakhal
Copy link
Contributor

I found this using my experimental checker present at: https://github.com/steakhal/llvm-project/tree/bb/add-redundant-lookup-checker

The idea for looking for redundant container lookups was inspired by #123376

If there is interest, I could think of upstreaming this alpha checker.
(For the StaticAnalyzer sources it was the only TP, and I had no FPs from the checker btw.)

I found this using my experimental checker present at:
https://github.com/steakhal/llvm-project/tree/bb/add-redundant-lookup-checker

The idea for looking for redundant container lookups was inspired by #123376

If there is interest, I could think of upstreaming this alpha checker.
@steakhal steakhal added clang Clang issues not falling into any other category clang:static analyzer labels Jan 30, 2025
@llvmbot
Copy link
Member

llvmbot commented Jan 30, 2025

@llvm/pr-subscribers-clang-static-analyzer-1

@llvm/pr-subscribers-clang

Author: Balazs Benics (steakhal)

Changes

I found this using my experimental checker present at: https://github.com/steakhal/llvm-project/tree/bb/add-redundant-lookup-checker

The idea for looking for redundant container lookups was inspired by #123376

If there is interest, I could think of upstreaming this alpha checker.
(For the StaticAnalyzer sources it was the only TP, and I had no FPs from the checker btw.)


Full diff: https://github.com/llvm/llvm-project/pull/125064.diff

1 Files Affected:

  • (modified) clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp (+4-2)
diff --git a/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp b/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
index 55bcb6e220e1ecf..7b2cccce93cfe64 100644
--- a/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
@@ -488,15 +488,17 @@ ExplodedGraph::trim(ArrayRef<const NodeTy *> Sinks,
   while (!WL2.empty()) {
     const ExplodedNode *N = WL2.pop_back_val();
 
+    auto [Place, Inserted] = Pass2.try_emplace(N);
+
     // Skip this node if we have already processed it.
-    if (Pass2.contains(N))
+    if (!Inserted)
       continue;
 
     // Create the corresponding node in the new graph and record the mapping
     // from the old node to the new node.
     ExplodedNode *NewN = G->createUncachedNode(N->getLocation(), N->State,
                                                N->getID(), N->isSink());
-    Pass2[N] = NewN;
+    Place->second = NewN;
 
     // Also record the reverse mapping from the new node to the old node.
     if (InverseMap) (*InverseMap)[NewN] = N;

@steakhal steakhal merged commit 0e62c74 into llvm:main Jan 30, 2025
11 checks passed
@steakhal steakhal deleted the bb/nfc-double-lookup branch January 30, 2025 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:static analyzer clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants