Author: Gábor Horváth
Date: 2026-07-11T16:38:24+01:00
New Revision: a11e844f4e3302d47c7934e4817f14639e510aad

URL: 
https://github.com/llvm/llvm-project/commit/a11e844f4e3302d47c7934e4817f14639e510aad
DIFF: 
https://github.com/llvm/llvm-project/commit/a11e844f4e3302d47c7934e4817f14639e510aad.diff

LOG: [clang][LifetimeSafety] Short-circuit joins of identical immutable 
containers (#208908)

Added: 
    

Modified: 
    clang/include/clang/Analysis/Analyses/LifetimeSafety/Utils.h

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Analysis/Analyses/LifetimeSafety/Utils.h 
b/clang/include/clang/Analysis/Analyses/LifetimeSafety/Utils.h
index 101ee083f0d95..543bbd045593c 100644
--- a/clang/include/clang/Analysis/Analyses/LifetimeSafety/Utils.h
+++ b/clang/include/clang/Analysis/Analyses/LifetimeSafety/Utils.h
@@ -38,6 +38,8 @@ template <typename Tag> struct ID {
 template <typename T>
 llvm::ImmutableSet<T> join(llvm::ImmutableSet<T> A, llvm::ImmutableSet<T> B,
                            typename llvm::ImmutableSet<T>::Factory &F) {
+  if (A.getRootWithoutRetain() == B.getRootWithoutRetain())
+    return A;
   if (A.getHeight() < B.getHeight())
     std::swap(A, B);
   for (const T &E : B)
@@ -70,6 +72,8 @@ llvm::ImmutableMap<K, V> join(const llvm::ImmutableMap<K, V> 
&A,
                               const llvm::ImmutableMap<K, V> &B,
                               typename llvm::ImmutableMap<K, V>::Factory &F,
                               Joiner JoinValues, JoinKind Kind) {
+  if (A.getRootWithoutRetain() == B.getRootWithoutRetain())
+    return A;
   if (A.getHeight() < B.getHeight())
     return join(B, A, F, JoinValues, Kind);
 


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to