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:
Chris Lattner 2005-02-12 19:20:28 +00:00
parent 5b7dcaa96b
commit e6f8c5a716

View File

@ -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);