Lines Matching defs:BD

87   BugDriver &BD;
90 ReducePassList(BugDriver &bd) : BD(bd) {}
108 if (BD.runPasses(BD.getProgram(), Prefix, PrefixOutput))
111 OrigProgram = std::move(BD.Program);
113 BD.Program = parseInputFile(PrefixOutput, BD.getContext());
114 if (BD.Program == nullptr) {
115 errs() << BD.getToolName() << ": Error reading bitcode file '"
125 if (BD.runPasses(BD.getProgram(), Suffix))
130 BD.Program = std::move(OrigProgram);
141 BugDriver &BD;
146 : BD(bd), TestFn(testFn) {}
165 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
190 if (TestFn(BD, M.get())) {
191 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
208 BugDriver &BD;
213 : BD(bd), TestFn(testFn) {}
254 if (KeepMain && !is_contained(Funcs, BD.getProgram().getFunction("main")))
259 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
322 if (TestFn(BD, M.get())) {
323 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
339 BugDriver &BD;
346 : BD(bd), FnName(FnName), TestFn(testFn) {}
364 std::unique_ptr<Module> M = CloneModule(BD.getProgram());
373 NewAttrs = NewAttrs.addFnAttributes(BD.getContext(), AB);
388 if (TestFn(BD, M.get())) {
389 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
447 BugDriver &BD;
451 ReduceCrashingBlocks(BugDriver &BD, BugTester testFn)
452 : BD(BD), TestFn(testFn) {}
470 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
532 if (TestFn(BD, M.get())) {
533 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
538 const ValueSymbolTable &GST = BD.getProgram().getValueSymbolTable();
558 BugDriver &BD;
564 : BD(bd), TestFn(testFn), Direction(Direction) {}
583 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
633 if (TestFn(BD, M.get())) {
634 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
639 const ValueSymbolTable &GST = BD.getProgram().getValueSymbolTable();
657 BugDriver &BD;
663 : BD(bd), TestFn(testFn), TTI(bd.getProgram().getDataLayout()) {}
681 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
719 if (TestFn(BD, M.get())) {
720 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
725 const ValueSymbolTable &GST = BD.getProgram().getValueSymbolTable();
743 BugDriver &BD;
748 : BD(bd), TestFn(testFn) {}
767 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
798 if (TestFn(BD, M.get())) {
799 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
817 BugDriver &BD;
822 : BD(bd), TestFn(testFn) {}
840 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
868 if (TestFn(BD, M.get())) {
869 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
886 BugDriver &BD;
891 : BD(bd), TestFn(testFn) {}
909 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
941 if (TestFn(BD, M.get())) {
942 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
951 BugDriver &BD;
956 : BD(bd), TestFn(testFn) {}
986 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
990 for (auto &NamedMD : BD.getProgram().named_metadata()) {
1004 if (TestFn(BD, M.get())) {
1011 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
1019 static Error ReduceGlobalInitializers(BugDriver &BD, BugTester TestFn) {
1020 Module &OrigM = BD.getProgram();
1044 if (TestFn(BD, M.get())) { // Still crashes?
1045 BD.setNewProgram(std::move(M));
1064 ReduceCrashingGlobalInitializers(BD, TestFn).reduceList(GVs);
1069 BD.EmitProgressBitcode(BD.getProgram(), "reduced-global-variables");
1074 static Error ReduceInsts(BugDriver &BD, BugTester TestFn) {
1079 for (const Function &F : BD.getProgram())
1086 ReduceCrashingInstructions(BD, TestFn).reduceList(Insts);
1114 for (Module::const_iterator FI = BD.getProgram().begin(),
1115 E = BD.getProgram().end();
1135 BD.deleteInstructionFromProgram(&*I, Simplification);
1138 if (TestFn(BD, M.get())) {
1141 BD.setNewProgram(std::move(M));
1159 for (Function &F : BD.getProgram())
1164 ReduceCrashingMetadata(BD, TestFn).reduceList(Insts);
1169 BD.EmitProgressBitcode(BD.getProgram(), "reduced-instructions");
1176 static Error DebugACrash(BugDriver &BD, BugTester TestFn) {
1180 if (Error E = ReduceGlobalInitializers(BD, TestFn))
1185 for (Function &F : BD.getProgram())
1195 ReduceCrashingFunctions(BD, TestFn).reduceList(Functions);
1200 BD.EmitProgressBitcode(BD.getProgram(), "reduced-function");
1206 for (Function &F : BD.getProgram())
1216 Function *Fn = BD.getProgram().getFunction(Name);
1225 ReduceCrashingFunctionAttributes(BD, Name, TestFn).reduceList(Attrs);
1233 BD.EmitProgressBitcode(BD.getProgram(), "reduced-function-attributes");
1241 for (Function &F : BD.getProgram())
1246 ReduceCrashingConditionals(BD, TestFn, true).reduceList(Blocks);
1249 Result = ReduceCrashingConditionals(BD, TestFn, false).reduceList(Blocks);
1253 BD.EmitProgressBitcode(BD.getProgram(), "reduced-conditionals");
1263 for (Function &F : BD.getProgram())
1267 Expected<bool> Result = ReduceCrashingBlocks(BD, TestFn).reduceList(Blocks);
1271 BD.EmitProgressBitcode(BD.getProgram(), "reduced-blocks");
1276 for (Function &F : BD.getProgram())
1280 Expected<bool> Result = ReduceSimplifyCFG(BD, TestFn).reduceList(Blocks);
1284 BD.EmitProgressBitcode(BD.getProgram(), "reduced-simplifycfg");
1290 if (Error E = ReduceInsts(BD, TestFn))
1295 std::unique_ptr<Module> M = CloneModule(BD.getProgram());
1297 if (TestFn(BD, M.get()))
1298 BD.setNewProgram(std::move(M));
1315 for (auto &NamedMD : BD.getProgram().named_metadata())
1318 ReduceCrashingNamedMD(BD, TestFn).reduceList(NamedMDNames);
1327 for (auto &NamedMD : BD.getProgram().named_metadata())
1331 ReduceCrashingNamedMDOps(BD, TestFn).reduceList(NamedMDOps);
1335 BD.EmitProgressBitcode(BD.getProgram(), "reduced-named-md");
1341 std::unique_ptr<Module> M = CloneModule(BD.getProgram());
1342 M = BD.performFinalCleanups(std::move(M), true);
1345 if (M && TestFn(BD, M.get()))
1346 BD.setNewProgram(
1350 BD.EmitProgressBitcode(BD.getProgram(), "reduced-simplified");
1355 static bool TestForOptimizerCrash(const BugDriver &BD, Module *M) {
1356 return BD.runPasses(*M, BD.getPassesToRun());
1396 static bool TestForCodeGenCrash(const BugDriver &BD, Module *M) {
1397 if (Error E = BD.compileProgram(*M)) {