mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Allow globals to be of different const'nesses when we link.
This finally resolves PR502, PR450, and test/Regression/Linker/2005-02-12-ConstantGlobals{,-2}.ll correctly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5b7dcaa96b
commit
e6f8c5a716
@ -517,18 +517,12 @@ static bool LinkGlobals(Module *Dest, Module *Src,
|
||||
DGV->setLinkage(NewLinkage);
|
||||
|
||||
if (LinkFromSrc) {
|
||||
if (DGV->isConstant() && !SGV->isConstant())
|
||||
return Error(Err, "Global Variable Collision on global '" +
|
||||
SGV->getName() + "': variables differ in const'ness");
|
||||
// Inherit const as appropriate
|
||||
if (SGV->isConstant()) DGV->setConstant(true);
|
||||
DGV->setConstant(SGV->isConstant());
|
||||
DGV->setInitializer(0);
|
||||
} else {
|
||||
if (SGV->isConstant() && !DGV->isConstant()) {
|
||||
if (!DGV->isExternal())
|
||||
return Error(Err, "Global Variable Collision on global '" +
|
||||
SGV->getName() + "': variables differ in const'ness");
|
||||
else
|
||||
if (DGV->isExternal())
|
||||
DGV->setConstant(true);
|
||||
}
|
||||
SGV->setLinkage(GlobalValue::ExternalLinkage);
|
||||
|
Loading…
Reference in New Issue
Block a user