diff options
author | Chris Lattner <sabre@nondot.org> | 2004-11-19 07:09:40 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-11-19 07:09:40 +0000 |
commit | fa1af1344910ee975f50ffdddf605c26f80ef016 (patch) | |
tree | 219f272c4da2011858d50f5b6fd7fc81f8cb5da1 /tools | |
parent | 6475b8d178f832c70da4af79fcb1e8d1690df059 (diff) | |
download | external_llvm-fa1af1344910ee975f50ffdddf605c26f80ef016.zip external_llvm-fa1af1344910ee975f50ffdddf605c26f80ef016.tar.gz external_llvm-fa1af1344910ee975f50ffdddf605c26f80ef016.tar.bz2 |
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
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bugpoint/Miscompilation.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
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<std::pair<std::string, const FunctionType*> > 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<std::pair<std::string, const FunctionType*> > 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 |