From d5f656f48b98b4fc4dcb131f113316ba04180f11 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 16 Jan 2011 02:05:10 +0000 Subject: [PATCH] simplify this code, it is still broken but will follow up on llvm-commits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123558 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/GlobalOpt.cpp | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index c1f66b772af..8519fce7a38 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -2169,16 +2169,10 @@ static bool isSimpleEnoughPointerToCommit(Constant *C) { // and we know how to evaluate it by moving the bitcast from the pointer // operand to the value operand. } else if (CE->getOpcode() == Instruction::BitCast && - isa(CE->getOperand(0)) && - CE->getType()->isPointerTy() && - CE->getOperand(0)->getType()->isPointerTy()) { - GlobalVariable *GV = cast(CE->getOperand(0)); + isa(CE->getOperand(0))) { // Do not allow weak/*_odr/linkonce/dllimport/dllexport linkage or // external globals. - if (!GV->hasUniqueInitializer()) - return false; - - return true; + return cast(CE->getOperand(0))->hasUniqueInitializer(); } } @@ -2360,12 +2354,9 @@ static bool EvaluateFunction(Function *F, Constant *&RetVal, // If we're evaluating a store through a bitcast, then we need // to pull the bitcast off the pointer type and push it onto the // stored value. - Ptr = dyn_cast(Ptr->getOperand(0)); - if (!Ptr) return false; + Ptr = CE->getOperand(0); - const PointerType *Ty = dyn_cast(Ptr->getType()); - if (!Ty) return false; - const Type *NewTy = Ty->getElementType(); + const Type *NewTy=cast(Ptr->getType())->getElementType(); // A bitcast'd pointer implicitly points to the first field of a // struct. Insert implicity "gep @x, 0, 0, ..." until we get down @@ -2374,8 +2365,7 @@ static bool EvaluateFunction(Function *F, Constant *&RetVal, while (const StructType *STy = dyn_cast(NewTy)) { NewTy = STy->getTypeAtIndex(0U); - const IntegerType *IdxTy = - IntegerType::get(NewTy->getContext(), 32); + const IntegerType *IdxTy =IntegerType::get(NewTy->getContext(), 32); Constant *IdxZero = ConstantInt::get(IdxTy, 0, false); Constant * const IdxList[] = {IdxZero, IdxZero};