Fix bug: Assembler/2003-02-02-ConstGlobal.ll
authorChris Lattner <sabre@nondot.org>
Sun, 2 Feb 2003 16:40:20 +0000 (16:40 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 2 Feb 2003 16:40:20 +0000 (16:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5467 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/llvmAsmParser.y

index 1189bb3706d09b5c519af52f34a88adaf70dad86..fd86d50ead85cc73db40ab68a800a420fb8d5f23 100644 (file)
@@ -510,16 +510,16 @@ static bool setValueName(Value *V, char *NameStr) {
       // 1. If at least one of the globals is uninitialized or 
       // 2. If both initializers have the same value.
       //
-      // This can only be done if the const'ness of the vars is the same.
-      //
       if (GlobalVariable *GV = dyn_cast<GlobalVariable>(V)) {
-        if (EGV->isConstant() == GV->isConstant() &&
-            (!EGV->hasInitializer() || !GV->hasInitializer() ||
-             EGV->getInitializer() == GV->getInitializer())) {
+        if (!EGV->hasInitializer() || !GV->hasInitializer() ||
+             EGV->getInitializer() == GV->getInitializer()) {
 
-          // Make sure the existing global version gets the initializer!
+          // Make sure the existing global version gets the initializer!  Make
+          // sure that it also gets marked const if the new version is.
           if (GV->hasInitializer() && !EGV->hasInitializer())
             EGV->setInitializer(GV->getInitializer());
+          if (GV->isConstant())
+            EGV->setConstant(true);
           
          delete GV;     // Destroy the duplicate!
           return true;   // They are equivalent!