[decompiler] support break (#516)

* support break

* finish implementation of break, decomp method 19 of res
This commit is contained in:
water111
2021-05-23 20:16:34 -04:00
committed by GitHub
parent a96710f0c5
commit d719bf5677
22 changed files with 1132 additions and 126 deletions
+10 -6
View File
@@ -242,13 +242,17 @@ void ObjectFileDB::ir2_stack_spill_slot_pass() {
if (!func.cfg_ok) {
return;
}
auto spill_map = build_spill_map(func.instructions, {func.prologue_end, func.epilogue_start});
auto map_size = spill_map.size();
if (map_size) {
functions_with_spills++;
total_slots += map_size;
try {
auto spill_map = build_spill_map(func.instructions, {func.prologue_end, func.epilogue_start});
auto map_size = spill_map.size();
if (map_size) {
functions_with_spills++;
total_slots += map_size;
}
func.ir2.env.set_stack_spills(spill_map);
} catch (std::exception& e) {
func.warnings.general_warning("stack spill failed: {}", e.what());
}
func.ir2.env.set_stack_spills(spill_map);
});
lg::info("Analyzed stack spills: found {} functions with spills (total {} vars), took {:.2f} ms",
functions_with_spills, total_slots, timer.getMs());