Lines Matching defs:BD
47 BugDriver &BD;
50 ReduceMiscompilingPasses(BugDriver &bd) : BD(bd) {}
69 if (BD.runPasses(BD.getProgram(), Suffix, BitcodeResult, false /*delete*/,
73 BD.setPassesToRun(Suffix);
74 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
76 if (Error E = BD.debugOptimizerCrash())
82 Expected<bool> Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "",
89 errs() << BD.getToolName() << ": I'm confused: the test fails when "
111 if (BD.runPasses(BD.getProgram(), Prefix, BitcodeResult, false /*delete*/,
115 BD.setPassesToRun(Prefix);
116 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
118 if (Error E = BD.debugOptimizerCrash())
124 Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "", false);
138 parseInputFile(BitcodeResult, BD.getContext());
140 errs() << BD.getToolName() << ": Error reading bitcode file '"
155 BD.swapProgramIn(std::move(PrefixOutput));
156 if (BD.runPasses(BD.getProgram(), Suffix, BitcodeResult, false /*delete*/,
160 BD.setPassesToRun(Suffix);
161 BD.EmitProgressBitcode(BD.getProgram(), "pass-error", false);
163 if (Error E = BD.debugOptimizerCrash())
169 Diff = BD.diffProgram(BD.getProgram(), BitcodeResult, "",
181 BD.setNewProgram(std::move(OriginalInput));
187 BugDriver &BD;
196 : BD(bd), TestFn(F) {}
227 static Expected<std::unique_ptr<Module>> testMergedProgram(const BugDriver &BD,
238 Expected<bool> Diff = BD.diffProgram(*Merged, "", "", false);
255 << (BD.getPassesToRun().size() == 1 ? "" : "es") << ":";
267 std::unique_ptr<Module> Clone = CloneModule(BD.getProgram(), VMap);
268 std::unique_ptr<Module> Orig = BD.swapProgramIn(std::move(Clone));
278 std::unique_ptr<Module> ToNotOptimize = CloneModule(BD.getProgram(), VMap);
283 TestFn(BD, std::move(ToOptimize), std::move(ToNotOptimize));
285 BD.setNewProgram(std::move(Orig));
306 ExtractLoops(BugDriver &BD,
316 std::unique_ptr<Module> ToNotOptimize = CloneModule(BD.getProgram(), VMap);
320 BD.extractLoop(ToOptimize.get());
333 AbstractInterpreter *AI = BD.switchToSafeInterpreter();
336 BD, *ToOptimizeLoopExtracted, *ToNotOptimize, Failure);
343 std::unique_ptr<Module> Old = BD.swapProgramIn(std::move(*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",
366 BD.switchToInterpreter(AI);
377 Expected<bool> Result = TestFn(BD, std::move(ToOptimizeLoopExtracted),
408 BD.setNewProgram(std::move(ToNotOptimize));
440 BD.setNewProgram(std::move(ToNotOptimize));
447 BugDriver &BD;
458 : BD(bd), TestFn(F), FunctionsBeingTested(Fns) {}
504 std::unique_ptr<Module> Clone = CloneModule(BD.getProgram(), VMap);
505 std::unique_ptr<Module> Orig = BD.swapProgramIn(std::move(Clone));
518 std::unique_ptr<Module> ToNotOptimize = CloneModule(BD.getProgram(), VMap);
525 BD.extractMappedBlocksFromModule(BBsOnClone, ToOptimize.get())) {
526 Expected<bool> Ret = TestFn(BD, std::move(New), std::move(ToNotOptimize));
527 BD.setNewProgram(std::move(Orig));
530 BD.setNewProgram(std::move(Orig));
538 ExtractBlocks(BugDriver &BD,
556 Expected<bool> Ret = ReduceMiscompiledBlocks(BD, TestFn, MiscompiledFunctions)
564 ReduceMiscompiledBlocks(BD, TestFn, MiscompiledFunctions)
573 std::unique_ptr<Module> ProgClone = CloneModule(BD.getProgram(), VMap);
577 BD.extractMappedBlocksFromModule(Blocks, ToExtract.get());
607 BD.setNewProgram(std::move(ProgClone));
616 BugDriver &BD,
624 Module &Prog = BD.getProgram();
631 Expected<bool> Ret = ReduceMiscompilingFunctions(BD, TestFn)
648 Expected<bool> Ret = ExtractLoops(BD, TestFn, MiscompiledFunctions);
654 DisambiguateGlobalSymbols(BD.getProgram());
658 Ret = ReduceMiscompilingFunctions(BD, TestFn)
672 Expected<bool> Ret = ExtractBlocks(BD, TestFn, MiscompiledFunctions);
678 DisambiguateGlobalSymbols(BD.getProgram());
681 Ret = ReduceMiscompilingFunctions(BD, TestFn)
701 static Expected<bool> TestOptimizer(BugDriver &BD, std::unique_ptr<Module> Test,
707 BD.runPassesOn(Test.get(), BD.getPassesToRun());
711 BD.EmitProgressBitcode(*Test, "pass-error", false);
712 BD.setNewProgram(std::move(Test));
713 if (Error E = BD.debugOptimizerCrash())
721 auto Result = testMergedProgram(BD, *Optimized, *Safe, Broken);
727 BD.setNewProgram(std::move(New));
782 CleanupAndPrepareModules(BugDriver &BD, std::unique_ptr<Module> Test,
785 Test = BD.performFinalCleanups(std::move(Test));
788 if (!BD.isExecutingJIT())
945 static Expected<bool> TestCodeGenerator(BugDriver &BD,
948 Test = CleanupAndPrepareModules(BD, std::move(Test), Safe.get());
955 errs() << BD.getToolName()
959 if (BD.writeProgramToFile(std::string(TestModuleBC), TestModuleFD, *Test)) {
973 errs() << BD.getToolName()
978 if (BD.writeProgramToFile(std::string(SafeModuleBC), SafeModuleFD, *Safe)) {
986 BD.compileSharedObject(std::string(SafeModuleBC));
994 Expected<bool> Result = BD.diffProgram(
995 BD.getProgram(), std::string(TestModuleBC), *SharedObject, false);