From bc2075977cb9555fd2d3b3c3f8a2d957599a964a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 8 Mar 2004 06:09:57 +0000 Subject: [PATCH] Eliminate a REALLY HORRIBLE API: mutateReferences, which is gross gross gross. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12212 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/llvmAsmParser.y | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 08be9f45429..5e2b9f71279 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -73,7 +73,7 @@ static struct PerModuleInfo { // here. This is used for forward references of ConstantPointerRefs. // typedef std::map, 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(OldGV)) + CurrentModule->getGlobalList().erase(GVar); + else + CurrentModule->getFunctionList().erase(cast(OldGV)); // Remove the map entry for the global now that it has been created... GlobalRefs.erase(I); -- 2.34.1