Allow globals to be of different const'nesses when we link.
authorChris Lattner <sabre@nondot.org>
Sat, 12 Feb 2005 19:20:28 +0000 (19:20 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 12 Feb 2005 19:20:28 +0000 (19:20 +0000)
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

lib/Linker/LinkModules.cpp

index ae80cd7da39cd03792728947cc3364b6848c363b..1d9911d669db93b0835843fbc42560c431607171 100644 (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);