Eliminate a REALLY HORRIBLE API: mutateReferences, which is gross gross gross.
authorChris Lattner <sabre@nondot.org>
Mon, 8 Mar 2004 06:09:57 +0000 (06:09 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 8 Mar 2004 06:09:57 +0000 (06:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12212 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/llvmAsmParser.y

index 08be9f454298f564de7bcb979112d4253979250a..5e2b9f71279eb669157d0b183166faf04456e84f 100644 (file)
@@ -73,7 +73,7 @@ static struct PerModuleInfo {
   // here.  This is used for forward references of ConstantPointerRefs.
   //
   typedef std::map<std::pair<const PointerType *,
-                             ValID>, GlobalVariable*> GlobalRefsType;
+                             ValID>, GlobalValue*> GlobalRefsType;
   GlobalRefsType GlobalRefs;
 
   void ModuleDone() {
@@ -114,7 +114,7 @@ static struct PerModuleInfo {
       GlobalRefs.find(std::make_pair(GV->getType(), D));
 
     if (I != GlobalRefs.end()) {
-      GlobalVariable *OldGV = I->second;   // Get the placeholder...
+      GlobalValue *OldGV = I->second;   // Get the placeholder...
       I->first.second.destroy();  // Free string memory if necessary
       
       // Loop over all of the uses of the GlobalValue.  The only thing they are
@@ -125,12 +125,14 @@ static struct PerModuleInfo {
         
       // Change the const pool reference to point to the real global variable
       // now.  This should drop a use from the OldGV.
-      CPR->mutateReferences(OldGV, GV);
+      CPR->replaceUsesOfWithOnConstant(OldGV, GV);
       assert(OldGV->use_empty() && "All uses should be gone now!");
       
       // Remove OldGV from the module...
-      CurrentModule->getGlobalList().remove(OldGV);
-      delete OldGV;                        // Delete the old placeholder
+      if (GlobalVariable *GVar = dyn_cast<GlobalVariable>(OldGV))
+        CurrentModule->getGlobalList().erase(GVar);
+      else
+        CurrentModule->getFunctionList().erase(cast<Function>(OldGV));
       
       // Remove the map entry for the global now that it has been created...
       GlobalRefs.erase(I);