Don't barf on empty basic blocks. Do not rely on assert
[oota-llvm.git] / lib / VMCore / Globals.cpp
index aeb34f43715d46aed6d8afe3286b33a63a5de72b..eb0df60757be4dff071e4b50dee4b1b34e9ee7ae 100644 (file)
@@ -210,20 +210,21 @@ void GlobalAlias::setAliasee(Constant *Aliasee)
   setOperand(0, Aliasee);
 }
 
-const GlobalValue *GlobalAlias::getAliasedGlobal() const  {
+const GlobalValue *GlobalAlias::getAliasedGlobal() const {
   const Constant *C = getAliasee();
   if (C) {
     if (const GlobalValue *GV = dyn_cast<GlobalValue>(C))
       return GV;
     else {
       const ConstantExpr *CE = 0;
-      if ((CE = dyn_cast<ConstantExpr>(Aliasee)) &&
-          (CE->getOpcode() == Instruction::BitCast))
-        return cast<GlobalValue>(CE->getOperand(0));
+      if ((CE = dyn_cast<ConstantExpr>(C)) &&
+          (CE->getOpcode() == Instruction::BitCast || 
+           CE->getOpcode() == Instruction::GetElementPtr))
+        return dyn_cast<GlobalValue>(CE->getOperand(0));
       else
         assert(0 && "Unsupported aliasee");
     }
-  } else
-    return 0;
+  }
+  return 0;
 }