Fix the regression on Transforms/GlobalOpt/deadglobal-2.ll from my
authorChris Lattner <sabre@nondot.org>
Tue, 13 Nov 2007 21:46:23 +0000 (21:46 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 13 Nov 2007 21:46:23 +0000 (21:46 +0000)
patch on friday.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44068 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/GlobalOpt.cpp

index 76f04efda618a9224c2d52b857027742819abcf9..f574ed4606381eb67cdea96dc66d5a2202dbfdba 100644 (file)
@@ -345,14 +345,14 @@ static bool CleanupConstantGlobalUsers(Value *V, Constant *Init) {
       // Do not transform "gepinst (gep constexpr (GV))" here, because forming
       // "gepconstexpr (gep constexpr (GV))" will cause the two gep's to fold
       // and will invalidate our notion of what Init is.
+      Constant *SubInit = 0;
       if (!isa<ConstantExpr>(GEP->getOperand(0))) {
         ConstantExpr *CE = 
           dyn_cast_or_null<ConstantExpr>(ConstantFoldInstruction(GEP));
         if (Init && CE && CE->getOpcode() == Instruction::GetElementPtr)
-          if (Constant *SubInit = 
-              ConstantFoldLoadThroughGEPConstantExpr(Init, CE))
-            Changed |= CleanupConstantGlobalUsers(GEP, SubInit);
+          SubInit = ConstantFoldLoadThroughGEPConstantExpr(Init, CE);
       }
+      Changed |= CleanupConstantGlobalUsers(GEP, SubInit);
 
       if (GEP->use_empty()) {
         GEP->eraseFromParent();