mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-11 21:45:16 +00:00
Simplify the performFinalCleanups interface
llvm-svn: 9740
This commit is contained in:
parent
a8d3699eb3
commit
c26574d777
@ -158,11 +158,11 @@ private:
|
||||
Module *deleteInstructionFromProgram(Instruction *I, unsigned Simp) const;
|
||||
|
||||
/// performFinalCleanups - This method clones the current Program and performs
|
||||
/// a series of cleanups intended to get rid of extra cruft on the module
|
||||
/// before handing it to the user... if the module parameter is specified, it
|
||||
/// operates directly on the specified Module, modifying it in place.
|
||||
/// a series of cleanups intended to get rid of extra cruft on the module. If
|
||||
/// the MayModifySemantics argument is true, then the cleanups is allowed to
|
||||
/// modify how the code behaves.
|
||||
///
|
||||
Module *performFinalCleanups(Module *M = 0) const;
|
||||
void performFinalCleanups(Module *M, bool MayModifySemantics = false) const;
|
||||
|
||||
/// initializeExecutionEnvironment - This method is used to set up the
|
||||
/// environment for executing LLVM programs.
|
||||
|
@ -224,8 +224,8 @@ bool ReduceMisCodegenFunctions::TestFuncs(const std::vector<Function*> &Funcs,
|
||||
}
|
||||
|
||||
// Clean up the modules, removing extra cruft that we don't need anymore...
|
||||
SafeModule = BD.performFinalCleanups(SafeModule);
|
||||
TestModule = BD.performFinalCleanups(TestModule);
|
||||
BD.performFinalCleanups(SafeModule);
|
||||
BD.performFinalCleanups(TestModule);
|
||||
|
||||
if (BD.writeProgramToFile(TestModuleBC, TestModule)) {
|
||||
std::cerr << "Error writing bytecode to `" << SafeModuleBC << "'\nExiting.";
|
||||
|
@ -378,7 +378,8 @@ bool BugDriver::debugCrash() {
|
||||
|
||||
// Try to clean up the testcase by running funcresolve and globaldce...
|
||||
std::cout << "\n*** Attempting to perform final cleanups: ";
|
||||
Module *M = performFinalCleanups();
|
||||
Module *M = CloneModule(Program);
|
||||
performFinalCleanups(M, true);
|
||||
std::swap(Program, M);
|
||||
|
||||
// Find out if the pass still crashes on the cleaned up program...
|
||||
|
@ -93,15 +93,13 @@ Module *BugDriver::deleteInstructionFromProgram(Instruction *I,
|
||||
/// a series of cleanups intended to get rid of extra cruft on the module
|
||||
/// before handing it to the user...
|
||||
///
|
||||
Module *BugDriver::performFinalCleanups(Module *InM) const {
|
||||
Module *M = InM ? InM : CloneModule(Program);
|
||||
|
||||
void BugDriver::performFinalCleanups(Module *M, bool MayModifySemantics) const {
|
||||
// Allow disabling these passes if they crash bugpoint.
|
||||
//
|
||||
// FIXME: This should eventually run these passes in a pass list to prevent
|
||||
// them from being able to crash bugpoint at all!
|
||||
//
|
||||
if (NoFinalCleanup) return M;
|
||||
if (NoFinalCleanup) return;
|
||||
|
||||
// Make all functions external, so GlobalDCE doesn't delete them...
|
||||
for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I)
|
||||
@ -113,8 +111,7 @@ Module *BugDriver::performFinalCleanups(Module *InM) const {
|
||||
CleanupPasses.add(createFunctionResolvingPass());
|
||||
CleanupPasses.add(createGlobalDCEPass());
|
||||
CleanupPasses.add(createDeadTypeEliminationPass());
|
||||
CleanupPasses.add(createDeadArgEliminationPass(InM == 0));
|
||||
CleanupPasses.add(createDeadArgEliminationPass(MayModifySemantics));
|
||||
CleanupPasses.add(createVerifierPass());
|
||||
CleanupPasses.run(*M);
|
||||
return M;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user