Lines Matching refs:bd
47 BugDriver &BD;
49 ReduceMiscompilingPasses(BugDriver &bd) : BD(bd) {}
70 if (BD.runPasses(BD.getProgram(), Suffix, BitcodeResult, false/*delete*/,
74 BD.setPassesToRun(Suffix);
75 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
76 exit(BD.debugOptimizerCrash());
80 bool Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "",
87 errs() << BD.getToolName() << ": I'm confused: the test fails when "
108 if (BD.runPasses(BD.getProgram(), Prefix, BitcodeResult, false/*delete*/,
112 BD.setPassesToRun(Prefix);
113 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
114 exit(BD.debugOptimizerCrash());
118 Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "", false, &Error);
132 BD.getContext()));
134 errs() << BD.getToolName() << ": Error reading bitcode file '"
148 OwningPtr<Module> OriginalInput(BD.swapProgramIn(PrefixOutput.take()));
149 if (BD.runPasses(BD.getProgram(), Suffix, BitcodeResult, false/*delete*/,
153 BD.setPassesToRun(Suffix);
154 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
155 exit(BD.debugOptimizerCrash());
159 Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "",
171 delete BD.swapProgramIn(OriginalInput.take());
177 BugDriver &BD;
180 ReduceMiscompilingFunctions(BugDriver &bd,
183 : BD(bd), TestFn(F) {}
216 static Module *TestMergedProgram(const BugDriver &BD, Module *M1, Module *M2,
226 errs() << BD.getToolName() << ": Error linking modules together:"
233 Broken = BD.diffProgram(M1, "", "", false, &Error);
253 << (BD.getPassesToRun().size() == 1 ? "" : "es") << ":";
265 Module *Clone = CloneModule(BD.getProgram(), VMap);
266 Module *Orig = BD.swapProgramIn(Clone);
276 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
281 bool Broken = TestFn(BD, ToOptimize, ToNotOptimize, Error);
283 delete BD.swapProgramIn(Orig);
304 static bool ExtractLoops(BugDriver &BD,
314 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
318 Module *ToOptimizeLoopExtracted = BD.ExtractLoop(ToOptimize);
334 AbstractInterpreter *AI = BD.switchToSafeInterpreter();
336 Module *New = TestMergedProgram(BD, ToOptimizeLoopExtracted, ToNotOptimize,
342 Module *Old = BD.swapProgramIn(New);
348 BD.switchToInterpreter(AI);
355 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-tno.bc",
357 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-to.bc",
359 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-to-le.bc",
370 BD.switchToInterpreter(AI);
380 Failure = TestFn(BD, ToOptimizeLoopExtracted, ToNotOptimize, Error);
402 errs() << BD.getToolName() << ": Error linking modules together:"
416 BD.setNewProgram(ToNotOptimize);
436 errs() << BD.getToolName() << ": Error linking modules together:"
453 BD.setNewProgram(ToNotOptimize);
460 BugDriver &BD;
464 ReduceMiscompiledBlocks(BugDriver &bd,
468 : BD(bd), TestFn(F), FunctionsBeingTested(Fns) {}
514 Module *Clone = CloneModule(BD.getProgram(), VMap);
515 Module *Orig = BD.swapProgramIn(Clone);
528 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
535 if (Module *New = BD.ExtractMappedBlocksFromModule(BBsOnClone, ToOptimize)) {
539 bool Ret = TestFn(BD, New, ToNotOptimize, Error);
540 delete BD.swapProgramIn(Orig);
543 delete BD.swapProgramIn(Orig);
554 static bool ExtractBlocks(BugDriver &BD,
573 bool Ret = ReduceMiscompiledBlocks(BD, TestFn, MiscompiledFunctions)
580 ReduceMiscompiledBlocks(BD, TestFn,
589 Module *ProgClone = CloneModule(BD.getProgram(), VMap);
593 Module *Extracted = BD.ExtractMappedBlocksFromModule(Blocks, ToExtract);
616 errs() << BD.getToolName() << ": Error linking modules together:"
623 BD.setNewProgram(ProgClone);
642 DebugAMiscompilation(BugDriver &BD,
651 Module *Prog = BD.getProgram();
658 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
674 bool Ret = ExtractLoops(BD, TestFn, MiscompiledFunctions, Error);
680 DisambiguateGlobalSymbols(BD.getProgram());
684 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
698 bool Ret = ExtractBlocks(BD, TestFn, MiscompiledFunctions, Error);
704 DisambiguateGlobalSymbols(BD.getProgram());
707 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
727 static bool TestOptimizer(BugDriver &BD, Module *Test, Module *Safe,
732 Module *Optimized = BD.runPassesOn(Test, BD.getPassesToRun(),
739 Module *New = TestMergedProgram(BD, Optimized, Safe, true, Error, Broken);
743 delete BD.swapProgramIn(New);
795 static void CleanupAndPrepareModules(BugDriver &BD, Module *&Test,
798 Test = BD.performFinalCleanups(Test);
801 if (!BD.isExecutingJIT()) return;
960 static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
962 CleanupAndPrepareModules(BD, Test, Safe);
969 errs() << BD.getToolName() << "Error making unique filename: "
973 if (BD.writeProgramToFile(TestModuleBC.str(), TestModuleFD, Test)) {
988 errs() << BD.getToolName() << "Error making unique filename: "
993 if (BD.writeProgramToFile(SafeModuleBC.str(), SafeModuleFD, Safe)) {
1001 std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str(), Error);
1010 bool Result = BD.diffProgram(BD.getProgram(), TestModuleBC.str(),