When loop extraction succeeds, make sure to map the function pointers over
authorChris Lattner <sabre@nondot.org>
Wed, 17 Mar 2004 17:42:09 +0000 (17:42 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 17 Mar 2004 17:42:09 +0000 (17:42 +0000)
to avoid dangling references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12470 91177308-0d34-0410-b5e6-96231b3b80d8

tools/bugpoint/Miscompilation.cpp

index 21f4bcc73bac7387387c9f9882d6126112b1d2fd..6524f7a8aead1bd3b5a7bc614a268a0ac9ebfc6d 100644 (file)
@@ -268,6 +268,17 @@ static bool ExtractLoops(BugDriver &BD,
       exit(1);
     }
     delete ToOptimizeLoopExtracted;
+
+    // All of the Function*'s in the MiscompiledFunctions list are in the old
+    // module.  Make sure to update them to point to the corresponding functions
+    // in the new module.
+    for (unsigned i = 0, e = MiscompiledFunctions.size(); i != e; ++i) {
+      Function *OldF = MiscompiledFunctions[i];
+      Function *NewF = 
+        ToNotOptimize->getFunction(OldF->getName(), OldF->getFunctionType());
+      MiscompiledFunctions[i] = NewF;
+    }
+
     BD.setNewProgram(ToNotOptimize);
     MadeChange = true;
   }