aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/optimize.c
diff options
Diffstat (limited to 'optimize.c')
-rw-r--r--optimize.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/optimize.c b/optimize.c
index 00595414..9b754831 100644
--- a/optimize.c
+++ b/optimize.c
@@ -47,6 +47,12 @@ static void clean_up_insns(struct entrypoint *ep)
} END_FOR_EACH_PTR(bb);
}
+static void cleanup_cfg(struct entrypoint *ep)
+{
+ kill_unreachable_bbs(ep);
+ domtree_build(ep);
+}
+
///
// optimization main loop
void optimize(struct entrypoint *ep)
@@ -97,7 +103,7 @@ repeat:
} while (repeat_phase);
pack_basic_blocks(ep);
if (repeat_phase & REPEAT_CFG_CLEANUP)
- kill_unreachable_bbs(ep);
+ cleanup_cfg(ep);
} while (repeat_phase);
vrfy_flow(ep);
@@ -117,7 +123,7 @@ repeat:
if (simplify_flow(ep)) {
clear_liveness(ep);
if (repeat_phase & REPEAT_CFG_CLEANUP)
- kill_unreachable_bbs(ep);
+ cleanup_cfg(ep);
goto repeat;
}