diff options
author | Chris Lattner <sabre@nondot.org> | 2004-03-14 21:17:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-03-14 21:17:22 +0000 |
commit | 6ce2d03352c5236558fbbf76612138c23e5f5164 (patch) | |
tree | 7458f52784e23911d8ba7e3f3a8b486bc0b0970c /llvm/tools/bugpoint/ExtractFunction.cpp | |
parent | 1a5c540c27ddcc8351aefacea90fada7be9c2be3 (diff) | |
download | bcm5719-llvm-6ce2d03352c5236558fbbf76612138c23e5f5164.tar.gz bcm5719-llvm-6ce2d03352c5236558fbbf76612138c23e5f5164.zip |
Refactor to use a new method
llvm-svn: 12395
Diffstat (limited to 'llvm/tools/bugpoint/ExtractFunction.cpp')
-rw-r--r-- | llvm/tools/bugpoint/ExtractFunction.cpp | 54 |
1 files changed, 15 insertions, 39 deletions
diff --git a/llvm/tools/bugpoint/ExtractFunction.cpp b/llvm/tools/bugpoint/ExtractFunction.cpp index 22bd1738952..53afd474fdd 100644 --- a/llvm/tools/bugpoint/ExtractFunction.cpp +++ b/llvm/tools/bugpoint/ExtractFunction.cpp @@ -112,25 +112,13 @@ Module *BugDriver::performFinalCleanups(Module *M, bool MayModifySemantics) { CleanupPasses.push_back(getPI(createDeadArgHackingPass())); else CleanupPasses.push_back(getPI(createDeadArgEliminationPass())); - - std::swap(Program, M); - std::string Filename; - bool Failed = runPasses(CleanupPasses, Filename); - std::swap(Program, M); - if (Failed) { + Module *New = runPassesOn(M, CleanupPasses); + if (New == 0) { std::cerr << "Final cleanups failed. Sorry. :( Please report a bug!\n"; - } else { - delete M; - M = ParseInputFile(Filename); - if (M == 0) { - std::cerr << getToolName() << ": Error reading bytecode file '" - << Filename << "'!\n"; - exit(1); - } - removeFile(Filename); } - return M; + delete M; + return New; } @@ -141,32 +129,20 @@ Module *BugDriver::ExtractLoop(Module *M) { std::vector<const PassInfo*> LoopExtractPasses; LoopExtractPasses.push_back(getPI(createSingleLoopExtractorPass())); - std::swap(Program, M); - std::string Filename; - bool Failed = runPasses(LoopExtractPasses, Filename); - std::swap(Program, M); - - if (Failed) { + Module *NewM = runPassesOn(M, LoopExtractPasses); + if (NewM == 0) { std::cerr << "Loop extraction failed. Sorry. :( Please report a bug!\n"; return 0; - } else { - Module *NewM = ParseInputFile(Filename); - if (NewM == 0) { - std::cerr << getToolName() << ": Error reading bytecode file '" - << Filename << "'!\n"; - exit(1); - } - removeFile(Filename); - - // Check to see if we created any new functions. If not, no loops were - // extracted and we should return null. - if (M->size() != NewM->size()) { - delete NewM; - return 0; - } - - return NewM; } + + // Check to see if we created any new functions. If not, no loops were + // extracted and we should return null. + if (M->size() != NewM->size()) { + delete NewM; + return 0; + } + + return NewM; } |