[llvm] 1652c3b - [GlobalOpt] Avoid early exit before dead constant check

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 1 06:57:26 PST 2022


Author: Nikita Popov
Date: 2022-02-01T15:57:19+01:00
New Revision: 1652c3b80c85f454c867413664fa7b51d3f08916

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

LOG: [GlobalOpt] Avoid early exit before dead constant check

In a similar vein to 236fbf571dc6cebcb81ac5187a170c8de6d5bc0e,
make sure we don't early-exit before the dead constant check.

Added: 
    

Modified: 
    llvm/lib/Transforms/IPO/GlobalOpt.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
index d3cac3efce868..a29d4f60a653e 100644
--- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
@@ -352,14 +352,10 @@ static bool collectSRATypes(DenseMap<uint64_t, Type *> &Types, GlobalValue *GV,
   while (!Worklist.empty()) {
     Use *U = Worklist.pop_back_val();
     User *V = U->getUser();
-    if (isa<BitCastOperator>(V) || isa<AddrSpaceCastOperator>(V)) {
-      AppendUses(V);
-      continue;
-    }
 
-    if (auto *GEP = dyn_cast<GEPOperator>(V)) {
-      if (!GEP->hasAllConstantIndices())
-        return false;
+    auto *GEP = dyn_cast<GEPOperator>(V);
+    if (isa<BitCastOperator>(V) || isa<AddrSpaceCastOperator>(V) ||
+        (GEP && GEP->hasAllConstantIndices())) {
       AppendUses(V);
       continue;
     }


        


More information about the llvm-commits mailing list