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 ParseInputFile(BitcodeResult, BD.getContext()));
134 errs() << BD.getToolName() << ": Error reading bitcode file '"
149 BD.swapProgramIn(PrefixOutput.release()));
150 if (BD.runPasses(BD.getProgram(), Suffix, BitcodeResult, false/*delete*/,
154 BD.setPassesToRun(Suffix);
155 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
156 exit(BD.debugOptimizerCrash());
160 Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "",
172 delete BD.swapProgramIn(OriginalInput.release());
178 BugDriver &BD;
184 : BD(bd), TestFn(F) {}
217 static Module *TestMergedProgram(const BugDriver &BD, Module *M1, Module *M2,
227 errs() << BD.getToolName() << ": Error linking modules together:"
234 Broken = BD.diffProgram(M1, "", "", false, &Error);
254 << (BD.getPassesToRun().size() == 1 ? "" : "es") << ":";
266 Module *Clone = CloneModule(BD.getProgram(), VMap);
267 Module *Orig = BD.swapProgramIn(Clone);
277 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
282 bool Broken = TestFn(BD, ToOptimize, ToNotOptimize, Error);
284 delete BD.swapProgramIn(Orig);
305 static bool ExtractLoops(BugDriver &BD,
315 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
319 Module *ToOptimizeLoopExtracted = BD.ExtractLoop(ToOptimize);
335 AbstractInterpreter *AI = BD.switchToSafeInterpreter();
337 Module *New = TestMergedProgram(BD, ToOptimizeLoopExtracted, ToNotOptimize,
343 Module *Old = BD.swapProgramIn(New);
349 BD.switchToInterpreter(AI);
356 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-tno.bc",
358 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-to.bc",
360 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-to-le.bc",
371 BD.switchToInterpreter(AI);
381 Failure = TestFn(BD, ToOptimizeLoopExtracted, ToNotOptimize, Error);
403 errs() << BD.getToolName() << ": Error linking modules together:"
417 BD.setNewProgram(ToNotOptimize);
437 errs() << BD.getToolName() << ": Error linking modules together:"
454 BD.setNewProgram(ToNotOptimize);
461 BugDriver &BD;
469 : BD(bd), TestFn(F), FunctionsBeingTested(Fns) {}
515 Module *Clone = CloneModule(BD.getProgram(), VMap);
516 Module *Orig = BD.swapProgramIn(Clone);
529 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
536 if (Module *New = BD.ExtractMappedBlocksFromModule(BBsOnClone, ToOptimize)) {
540 bool Ret = TestFn(BD, New, ToNotOptimize, Error);
541 delete BD.swapProgramIn(Orig);
544 delete BD.swapProgramIn(Orig);
555 static bool ExtractBlocks(BugDriver &BD,
574 bool Ret = ReduceMiscompiledBlocks(BD, TestFn, MiscompiledFunctions)
581 ReduceMiscompiledBlocks(BD, TestFn,
590 Module *ProgClone = CloneModule(BD.getProgram(), VMap);
594 Module *Extracted = BD.ExtractMappedBlocksFromModule(Blocks, ToExtract);
617 errs() << BD.getToolName() << ": Error linking modules together:"
624 BD.setNewProgram(ProgClone);
643 DebugAMiscompilation(BugDriver &BD,
652 Module *Prog = BD.getProgram();
659 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
675 bool Ret = ExtractLoops(BD, TestFn, MiscompiledFunctions, Error);
681 DisambiguateGlobalSymbols(BD.getProgram());
685 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
699 bool Ret = ExtractBlocks(BD, TestFn, MiscompiledFunctions, Error);
705 DisambiguateGlobalSymbols(BD.getProgram());
708 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
728 static bool TestOptimizer(BugDriver &BD, Module *Test, Module *Safe,
733 Module *Optimized = BD.runPassesOn(Test, BD.getPassesToRun(),
740 Module *New = TestMergedProgram(BD, Optimized, Safe, true, Error, Broken);
744 delete BD.swapProgramIn(New);
796 static void CleanupAndPrepareModules(BugDriver &BD, Module *&Test,
799 Test = BD.performFinalCleanups(Test);
802 if (!BD.isExecutingJIT()) return;
961 static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
963 CleanupAndPrepareModules(BD, Test, Safe);
970 errs() << BD.getToolName() << "Error making unique filename: "
974 if (BD.writeProgramToFile(TestModuleBC.str(), TestModuleFD, Test)) {
989 errs() << BD.getToolName() << "Error making unique filename: "
994 if (BD.writeProgramToFile(SafeModuleBC.str(), SafeModuleFD, Safe)) {
1002 std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str(), Error);
1011 bool Result = BD.diffProgram(BD.getProgram(), TestModuleBC.str(),