mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 20:23:59 +00:00
Don't load values out of global constants with weak
linkage: the value may be replaced with something different at link time. (Frontends that want to allow values to be loaded out of weak constants can give their constants weak_odr linkage). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67407 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -335,7 +335,8 @@ ConstantFoldMappedInstruction(const Instruction *I) {
|
||||
if (ConstantExpr *CE = dyn_cast<ConstantExpr>(Ops[0]))
|
||||
if (!LI->isVolatile() && CE->getOpcode() == Instruction::GetElementPtr)
|
||||
if (GlobalVariable *GV = dyn_cast<GlobalVariable>(CE->getOperand(0)))
|
||||
if (GV->isConstant() && !GV->isDeclaration())
|
||||
if (GV->isConstant() && !GV->isDeclaration() &&
|
||||
!GV->mayBeOverridden())
|
||||
return ConstantFoldLoadThroughGEPConstantExpr(GV->getInitializer(),
|
||||
CE);
|
||||
|
||||
|
Reference in New Issue
Block a user