diff options
author | Chris Lattner <sabre@nondot.org> | 2011-01-16 02:05:10 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-01-16 02:05:10 +0000 |
commit | d5f656f48b98b4fc4dcb131f113316ba04180f11 (patch) | |
tree | a1ddbefc1738f1919dc28616ff5da608c29985fb /lib | |
parent | c850965ec06bdf3f71374cee8d63a5401e4228de (diff) | |
download | external_llvm-d5f656f48b98b4fc4dcb131f113316ba04180f11.zip external_llvm-d5f656f48b98b4fc4dcb131f113316ba04180f11.tar.gz external_llvm-d5f656f48b98b4fc4dcb131f113316ba04180f11.tar.bz2 |
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
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index c1f66b7..8519fce 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<GlobalVariable>(CE->getOperand(0)) && - CE->getType()->isPointerTy() && - CE->getOperand(0)->getType()->isPointerTy()) { - GlobalVariable *GV = cast<GlobalVariable>(CE->getOperand(0)); + isa<GlobalVariable>(CE->getOperand(0))) { // Do not allow weak/*_odr/linkonce/dllimport/dllexport linkage or // external globals. - if (!GV->hasUniqueInitializer()) - return false; - - return true; + return cast<GlobalVariable>(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<Constant>(Ptr->getOperand(0)); - if (!Ptr) return false; + Ptr = CE->getOperand(0); - const PointerType *Ty = dyn_cast<PointerType>(Ptr->getType()); - if (!Ty) return false; - const Type *NewTy = Ty->getElementType(); + const Type *NewTy=cast<PointerType>(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<StructType>(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}; |