diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 7 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Scalar/SCCP.cpp | 4 | 
2 files changed, 5 insertions, 6 deletions
| diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 6af0afd55e1..26963280bbe 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -11227,15 +11227,14 @@ Instruction *InstCombiner::visitLoadInst(LoadInst &LI) {      // Instcombine load (constant global) into the value loaded.      if (GlobalVariable *GV = dyn_cast<GlobalVariable>(Op)) -      if (GV->isConstant() && !GV->isDeclaration() && !GV->mayBeOverridden()) +      if (GV->isConstant() && GV->hasDefinitiveInitializer())          return ReplaceInstUsesWith(LI, GV->getInitializer());      // Instcombine load (constantexpr_GEP global, 0, ...) into the value loaded.      if (ConstantExpr *CE = dyn_cast<ConstantExpr>(Op)) {        if (CE->getOpcode() == Instruction::GetElementPtr) {          if (GlobalVariable *GV = dyn_cast<GlobalVariable>(CE->getOperand(0))) -          if (GV->isConstant() && !GV->isDeclaration() && -              !GV->mayBeOverridden()) +          if (GV->isConstant() && GV->hasDefinitiveInitializer())              if (Constant *V =                  ConstantFoldLoadThroughGEPConstantExpr(GV->getInitializer(), CE))                return ReplaceInstUsesWith(LI, V); @@ -11259,7 +11258,7 @@ Instruction *InstCombiner::visitLoadInst(LoadInst &LI) {    // If this load comes from anywhere in a constant global, and if the global    // is all undef or zero, we know what it loads.    if (GlobalVariable *GV = dyn_cast<GlobalVariable>(Op->getUnderlyingObject())){ -    if (GV->isConstant() && GV->hasInitializer() && !GV->mayBeOverridden()) { +    if (GV->isConstant() && GV->hasDefinitiveInitializer()) {        if (GV->getInitializer()->isNullValue())          return ReplaceInstUsesWith(LI, Constant::getNullValue(LI.getType()));        else if (isa<UndefValue>(GV->getInitializer())) diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp index a49bcc84547..d2a70ea9d00 100644 --- a/llvm/lib/Transforms/Scalar/SCCP.cpp +++ b/llvm/lib/Transforms/Scalar/SCCP.cpp @@ -1131,7 +1131,7 @@ void SCCPSolver::visitLoadInst(LoadInst &I) {      // Transform load (constant global) into the value loaded.      if (GlobalVariable *GV = dyn_cast<GlobalVariable>(Ptr)) {        if (GV->isConstant()) { -        if (!GV->isDeclaration() && !GV->mayBeOverridden()) { +        if (GV->hasDefinitiveInitializer()) {            markConstant(IV, &I, GV->getInitializer());            return;          } @@ -1150,7 +1150,7 @@ void SCCPSolver::visitLoadInst(LoadInst &I) {      if (ConstantExpr *CE = dyn_cast<ConstantExpr>(Ptr))        if (CE->getOpcode() == Instruction::GetElementPtr)      if (GlobalVariable *GV = dyn_cast<GlobalVariable>(CE->getOperand(0))) -      if (GV->isConstant() && !GV->isDeclaration() && !GV->mayBeOverridden()) +      if (GV->isConstant() && GV->hasDefinitiveInitializer())          if (Constant *V =               ConstantFoldLoadThroughGEPConstantExpr(GV->getInitializer(), CE)) {            markConstant(IV, &I, V); | 

