Lines Matching defs: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;
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,
341 delete BD.swapProgramIn(New);
343 BD.switchToInterpreter(AI);
350 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-tno.bc",
352 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-to.bc",
354 BD.writeProgramToFile(OutputPrefix + "-loop-extract-fail-to-le.bc",
365 BD.switchToInterpreter(AI);
371 Failure = TestFn(BD, ToOptimizeLoopExtracted, ToNotOptimize, Error);
401 errs() << BD.getToolName() << ": Error linking modules together:"
418 BD.setNewProgram(ToNotOptimize);
425 BugDriver &BD;
433 : BD(bd), TestFn(F), FunctionsBeingTested(Fns) {}
479 Module *Clone = CloneModule(BD.getProgram(), VMap);
480 Module *Orig = BD.swapProgramIn(Clone);
493 Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap);
500 if (Module *New = BD.ExtractMappedBlocksFromModule(BBsOnClone, ToOptimize)) {
504 bool Ret = TestFn(BD, New, ToNotOptimize, Error);
505 delete BD.swapProgramIn(Orig);
508 delete BD.swapProgramIn(Orig);
519 static bool ExtractBlocks(BugDriver &BD,
538 bool Ret = ReduceMiscompiledBlocks(BD, TestFn, MiscompiledFunctions)
545 ReduceMiscompiledBlocks(BD, TestFn,
554 Module *ProgClone = CloneModule(BD.getProgram(), VMap);
558 Module *Extracted = BD.ExtractMappedBlocksFromModule(Blocks, ToExtract);
581 errs() << BD.getToolName() << ": Error linking modules together:"
588 BD.setNewProgram(ProgClone);
607 DebugAMiscompilation(BugDriver &BD,
616 Module *Prog = BD.getProgram();
623 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
639 bool Ret = ExtractLoops(BD, TestFn, MiscompiledFunctions, Error);
645 DisambiguateGlobalSymbols(BD.getProgram());
649 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
663 bool Ret = ExtractBlocks(BD, TestFn, MiscompiledFunctions, Error);
669 DisambiguateGlobalSymbols(BD.getProgram());
672 ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions,
692 static bool TestOptimizer(BugDriver &BD, Module *Test, Module *Safe,
697 Module *Optimized = BD.runPassesOn(Test, BD.getPassesToRun(),
704 Module *New = TestMergedProgram(BD, Optimized, Safe, true, Error, Broken);
708 delete BD.swapProgramIn(New);
760 static void CleanupAndPrepareModules(BugDriver &BD, Module *&Test,
763 Test = BD.performFinalCleanups(Test);
766 if (!BD.isExecutingJIT()) return;
925 static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
927 CleanupAndPrepareModules(BD, Test, Safe);
932 errs() << BD.getToolName() << "Error making unique filename: "
936 if (BD.writeProgramToFile(TestModuleBC.str(), Test)) {
948 errs() << BD.getToolName() << "Error making unique filename: "
953 if (BD.writeProgramToFile(SafeModuleBC.str(), Safe)) {
961 std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str(), Error);
970 bool Result = BD.diffProgram(BD.getProgram(), TestModuleBC.str(),