[llvm-commits] [llvm] r71783 - /llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp

Dale Johannesen dalej at apple.com
Thu May 14 11:41:36 PDT 2009


Author: johannes
Date: Thu May 14 13:41:18 2009
New Revision: 71783

URL: http://llvm.org/viewvc/llvm-project?rev=71783&view=rev
Log:
Reuse existing getUnderlyingObject instead of
adding another copy.


Modified:
    llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp

Modified: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=71783&r1=71782&r2=71783&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp Thu May 14 13:41:18 2009
@@ -348,21 +348,6 @@
   return 0;
 }
 
-/// findGlobalVariableBase - Recurse into a ConstantExpr to find the underlying
-/// GlobalVariable, if there is one.
-static GlobalVariable* findGlobalVariableBase(ConstantExpr* CE) {
-  if (isa<GlobalVariable>(CE))
-    return dyn_cast<GlobalVariable>(CE);
-  if (CE->getOpcode()==Instruction::GetElementPtr ||
-      CE->getOpcode()==Instruction::BitCast) {
-    if (isa<GlobalVariable>(CE->getOperand(0)))
-      return dyn_cast<GlobalVariable>(CE->getOperand(0));
-    if (ConstantExpr *CE2 = dyn_cast<ConstantExpr>(CE->getOperand(0)))
-      return findGlobalVariableBase(CE2);
-  }
-  return NULL;
-}
-
 /// DominatesMergePoint - If we have a merge point of an "if condition" as
 /// accepted above, return true if the specified value dominates the block.  We
 /// don't handle the true generality of domination here, just a special case
@@ -409,15 +394,12 @@
             !isa<Constant>(I->getOperand(0)))
           return false;
         // External weak globals may have address 0, so we can't load them.
-        GlobalVariable* GV = dyn_cast<GlobalVariable>(I->getOperand(0));
-        if (GV && GV->hasExternalWeakLinkage())
-          return false;
-        // The global may be buried within a ConstantExpr.
-        if (ConstantExpr *CE = dyn_cast<ConstantExpr>(I->getOperand(0)))
-          GV = findGlobalVariableBase(CE);
-        if (GV && GV->hasExternalWeakLinkage())
-          return false;
-
+        Value *V2 = I->getOperand(0)->getUnderlyingObject();
+        if (V2) {
+          GlobalVariable* GV = dyn_cast<GlobalVariable>(V2);
+          if (GV && GV->hasExternalWeakLinkage())
+            return false;
+        }
         // Finally, we have to check to make sure there are no instructions
         // before the load in its basic block, as we are going to hoist the loop
         // out to its predecessor.





More information about the llvm-commits mailing list