summaryrefslogtreecommitdiff
path: root/tools/bugpoint/Miscompilation.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-11-19 07:09:40 +0000
committerChris Lattner <sabre@nondot.org>2004-11-19 07:09:40 +0000
commitfa1af1344910ee975f50ffdddf605c26f80ef016 (patch)
tree219f272c4da2011858d50f5b6fd7fc81f8cb5da1 /tools/bugpoint/Miscompilation.cpp
parent6475b8d178f832c70da4af79fcb1e8d1690df059 (diff)
downloadllvm-fa1af1344910ee975f50ffdddf605c26f80ef016.tar.gz
llvm-fa1af1344910ee975f50ffdddf605c26f80ef016.tar.bz2
llvm-fa1af1344910ee975f50ffdddf605c26f80ef016.tar.xz
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/bugpoint/Miscompilation.cpp')
-rw-r--r--tools/bugpoint/Miscompilation.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp
index b578202402..6800c8e0ad 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