Lines Matching refs:BD

75   BugDriver &BD;
78 ReducePassList(BugDriver &bd) : BD(bd) {}
96 if (BD.runPasses(BD.getProgram(), Prefix, PrefixOutput))
99 OrigProgram = std::move(BD.Program);
101 BD.Program = parseInputFile(PrefixOutput, BD.getContext());
102 if (BD.Program == nullptr) {
103 errs() << BD.getToolName() << ": Error reading bitcode file '"
113 if (BD.runPasses(BD.getProgram(), Suffix))
118 BD.Program = std::move(OrigProgram);
129 BugDriver &BD;
134 : BD(bd), TestFn(testFn) {}
153 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
178 if (TestFn(BD, M.get())) {
179 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
196 BugDriver &BD;
201 : BD(bd), TestFn(testFn) {}
242 if (KeepMain && !is_contained(Funcs, BD.getProgram().getFunction("main")))
247 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
310 if (TestFn(BD, M.get())) {
311 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
327 BugDriver &BD;
334 : BD(bd), FnName(FnName), TestFn(testFn) {}
352 std::unique_ptr<Module> M = CloneModule(BD.getProgram());
362 NewAttrs.addAttributes(BD.getContext(), AttributeList::FunctionIndex, AB);
373 if (TestFn(BD, M.get())) {
374 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
432 BugDriver &BD;
436 ReduceCrashingBlocks(BugDriver &BD, BugTester testFn)
437 : BD(BD), TestFn(testFn) {}
455 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
515 std::unique_ptr<Module> New = BD.runPassesOn(M.get(), Passes);
523 if (TestFn(BD, M.get())) {
524 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
529 const ValueSymbolTable &GST = BD.getProgram().getValueSymbolTable();
549 BugDriver &BD;
555 : BD(bd), TestFn(testFn), Direction(Direction) {}
574 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
622 std::unique_ptr<Module> New = BD.runPassesOn(M.get(), Passes);
630 if (TestFn(BD, M.get())) {
631 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
636 const ValueSymbolTable &GST = BD.getProgram().getValueSymbolTable();
654 BugDriver &BD;
660 : BD(bd), TestFn(testFn), TTI(bd.getProgram().getDataLayout()) {}
678 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
714 std::unique_ptr<Module> New = BD.runPassesOn(M.get(), Passes);
722 if (TestFn(BD, M.get())) {
723 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
728 const ValueSymbolTable &GST = BD.getProgram().getValueSymbolTable();
746 BugDriver &BD;
751 : BD(bd), TestFn(testFn) {}
770 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
804 if (TestFn(BD, M.get())) {
805 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
823 BugDriver &BD;
828 : BD(bd), TestFn(testFn) {}
846 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
876 if (TestFn(BD, M.get())) {
877 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
894 BugDriver &BD;
899 : BD(bd), TestFn(testFn) {}
917 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
951 if (TestFn(BD, M.get())) {
952 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
961 BugDriver &BD;
966 : BD(bd), TestFn(testFn) {}
996 std::unique_ptr<Module> M = CloneModule(BD.getProgram(), VMap);
1000 for (auto &NamedMD : BD.getProgram().named_metadata()) {
1016 if (TestFn(BD, M.get())) {
1023 BD.setNewProgram(std::move(M)); // It crashed, keep the trimmed version...
1031 static Error ReduceGlobalInitializers(BugDriver &BD, BugTester TestFn) {
1032 Module &OrigM = BD.getProgram();
1056 if (TestFn(BD, M.get())) { // Still crashes?
1057 BD.setNewProgram(std::move(M));
1076 ReduceCrashingGlobalInitializers(BD, TestFn).reduceList(GVs);
1081 BD.EmitProgressBitcode(BD.getProgram(), "reduced-global-variables");
1086 static Error ReduceInsts(BugDriver &BD, BugTester TestFn) {
1091 for (const Function &F : BD.getProgram())
1098 ReduceCrashingInstructions(BD, TestFn).reduceList(Insts);
1126 for (Module::const_iterator FI = BD.getProgram().begin(),
1127 E = BD.getProgram().end();
1147 BD.deleteInstructionFromProgram(&*I, Simplification);
1150 if (TestFn(BD, M.get())) {
1153 BD.setNewProgram(std::move(M));
1171 for (Function &F : BD.getProgram())
1176 ReduceCrashingMetadata(BD, TestFn).reduceList(Insts);
1181 BD.EmitProgressBitcode(BD.getProgram(), "reduced-instructions");
1188 static Error DebugACrash(BugDriver &BD, BugTester TestFn) {
1192 if (Error E = ReduceGlobalInitializers(BD, TestFn))
1197 for (Function &F : BD.getProgram())
1207 ReduceCrashingFunctions(BD, TestFn).reduceList(Functions);
1212 BD.EmitProgressBitcode(BD.getProgram(), "reduced-function");
1218 for (Function &F : BD.getProgram())
1228 Function *Fn = BD.getProgram().getFunction(Name);
1237 ReduceCrashingFunctionAttributes(BD, Name, TestFn).reduceList(Attrs);
1245 BD.EmitProgressBitcode(BD.getProgram(), "reduced-function-attributes");
1253 for (Function &F : BD.getProgram())
1258 ReduceCrashingConditionals(BD, TestFn, true).reduceList(Blocks);
1261 Result = ReduceCrashingConditionals(BD, TestFn, false).reduceList(Blocks);
1265 BD.EmitProgressBitcode(BD.getProgram(), "reduced-conditionals");
1275 for (Function &F : BD.getProgram())
1279 Expected<bool> Result = ReduceCrashingBlocks(BD, TestFn).reduceList(Blocks);
1283 BD.EmitProgressBitcode(BD.getProgram(), "reduced-blocks");
1288 for (Function &F : BD.getProgram())
1292 Expected<bool> Result = ReduceSimplifyCFG(BD, TestFn).reduceList(Blocks);
1296 BD.EmitProgressBitcode(BD.getProgram(), "reduced-simplifycfg");
1302 if (Error E = ReduceInsts(BD, TestFn))
1307 std::unique_ptr<Module> M = CloneModule(BD.getProgram());
1309 if (TestFn(BD, M.get()))
1310 BD.setNewProgram(std::move(M));
1327 for (auto &NamedMD : BD.getProgram().named_metadata())
1330 ReduceCrashingNamedMD(BD, TestFn).reduceList(NamedMDNames);
1339 for (auto &NamedMD : BD.getProgram().named_metadata())
1343 ReduceCrashingNamedMDOps(BD, TestFn).reduceList(NamedMDOps);
1347 BD.EmitProgressBitcode(BD.getProgram(), "reduced-named-md");
1353 std::unique_ptr<Module> M = CloneModule(BD.getProgram());
1354 M = BD.performFinalCleanups(std::move(M), true);
1357 if (M && TestFn(BD, M.get()))
1358 BD.setNewProgram(
1362 BD.EmitProgressBitcode(BD.getProgram(), "reduced-simplified");
1367 static bool TestForOptimizerCrash(const BugDriver &BD, Module *M) {
1368 return BD.runPasses(*M, BD.getPassesToRun());
1408 static bool TestForCodeGenCrash(const BugDriver &BD, Module *M) {
1409 if (Error E = BD.compileProgram(*M)) {