mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 08:17:40 +00:00
Return a std::unique_ptr from parseInputFile and propagate. NFC.
The memory management in BugPoint is fairly convoluted, so this just unwraps one layer by changing the return type of functions that always return owned Modules. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216464 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -72,7 +72,7 @@ ReducePassList::doTest(std::vector<std::string> &Prefix,
|
||||
|
||||
OrigProgram = BD.Program;
|
||||
|
||||
BD.Program = ParseInputFile(PrefixOutput, BD.getContext());
|
||||
BD.Program = parseInputFile(PrefixOutput, BD.getContext()).release();
|
||||
if (BD.Program == nullptr) {
|
||||
errs() << BD.getToolName() << ": Error reading bitcode file '"
|
||||
<< PrefixOutput << "'!\n";
|
||||
@@ -320,13 +320,13 @@ bool ReduceCrashingBlocks::TestBlocks(std::vector<const BasicBlock*> &BBs) {
|
||||
std::vector<std::string> Passes;
|
||||
Passes.push_back("simplifycfg");
|
||||
Passes.push_back("verify");
|
||||
Module *New = BD.runPassesOn(M, Passes);
|
||||
std::unique_ptr<Module> New = BD.runPassesOn(M, Passes);
|
||||
delete M;
|
||||
if (!New) {
|
||||
errs() << "simplifycfg failed!\n";
|
||||
exit(1);
|
||||
}
|
||||
M = New;
|
||||
M = New.release();
|
||||
|
||||
// Try running on the hacked up program...
|
||||
if (TestFn(BD, M)) {
|
||||
@@ -576,20 +576,17 @@ static bool DebugACrash(BugDriver &BD,
|
||||
continue;
|
||||
|
||||
outs() << "Checking instruction: " << *I;
|
||||
Module *M = BD.deleteInstructionFromProgram(I, Simplification);
|
||||
std::unique_ptr<Module> M =
|
||||
BD.deleteInstructionFromProgram(I, Simplification);
|
||||
|
||||
// Find out if the pass still crashes on this pass...
|
||||
if (TestFn(BD, M)) {
|
||||
if (TestFn(BD, M.get())) {
|
||||
// Yup, it does, we delete the old module, and continue trying
|
||||
// to reduce the testcase...
|
||||
BD.setNewProgram(M);
|
||||
BD.setNewProgram(M.release());
|
||||
InstructionsToSkipBeforeDeleting = CurInstructionNum;
|
||||
goto TryAgain; // I wish I had a multi-level break here!
|
||||
}
|
||||
|
||||
// This pass didn't crash without this instruction, try the next
|
||||
// one.
|
||||
delete M;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -605,7 +602,7 @@ ExitLoops:
|
||||
if (!BugpointIsInterrupted) {
|
||||
outs() << "\n*** Attempting to perform final cleanups: ";
|
||||
Module *M = CloneModule(BD.getProgram());
|
||||
M = BD.performFinalCleanups(M, true);
|
||||
M = BD.performFinalCleanups(M, true).release();
|
||||
|
||||
// Find out if the pass still crashes on the cleaned up program...
|
||||
if (TestFn(BD, M)) {
|
||||
|
||||
Reference in New Issue
Block a user