From fa1af1344910ee975f50ffdddf605c26f80ef016 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 19 Nov 2004 07:09:40 +0000 Subject: Fix a bug in the checkin where I adjusted this code to work when LinkModules nukes the second module argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17986 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/bugpoint/Miscompilation.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'tools') diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp index b578202..6800c8e 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -295,8 +295,9 @@ static bool ExtractLoops(BugDriver &BD, std::vector > MisCompFunctions; for (Module::iterator I = ToOptimizeLoopExtracted->begin(), E = ToOptimizeLoopExtracted->end(); I != E; ++I) - MisCompFunctions.push_back(std::make_pair(I->getName(), - I->getFunctionType())); + if (!I->isExternal()) + MisCompFunctions.push_back(std::make_pair(I->getName(), + I->getFunctionType())); // Okay, great! Now we know that we extracted a loop and that loop // extraction both didn't break the program, and didn't mask the problem. @@ -432,8 +433,9 @@ static bool ExtractBlocks(BugDriver &BD, std::vector > MisCompFunctions; for (Module::iterator I = Extracted->begin(), E = Extracted->end(); I != E; ++I) - MisCompFunctions.push_back(std::make_pair(I->getName(), - I->getFunctionType())); + if (!I->isExternal()) + MisCompFunctions.push_back(std::make_pair(I->getName(), + I->getFunctionType())); std::string ErrorMsg; if (LinkModules(ProgClone, Extracted, &ErrorMsg)) { @@ -624,11 +626,10 @@ static void CleanupAndPrepareModules(BugDriver &BD, Module *&Test, // Call the old main function and return its result BasicBlock *BB = new BasicBlock("entry", newMain); - CallInst *call = new CallInst(oldMainProto, args); - BB->getInstList().push_back(call); + CallInst *call = new CallInst(oldMainProto, args, "", BB); // If the type of old function wasn't void, return value of call - new ReturnInst(oldMain->getReturnType() != Type::VoidTy ? call : 0, BB); + new ReturnInst(call, BB); } // The second nasty issue we must deal with in the JIT is that the Safe -- cgit v1.1