aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--flow.c13
-rw-r--r--flow.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/flow.c b/flow.c
index a67c2450..36934e43 100644
--- a/flow.c
+++ b/flow.c
@@ -766,6 +766,19 @@ void simplify_symbol_usage(struct entrypoint *ep)
} END_FOR_EACH_PTR(pseudo);
}
+void kill_dead_stores(struct entrypoint *ep, pseudo_t addr, int local)
+{
+ unsigned long generation;
+ struct basic_block *bb;
+
+ generation = ++bb_generation;
+ FOR_EACH_PTR(ep->bbs, bb) {
+ if (bb->children)
+ continue;
+ kill_dead_stores_bb(addr, generation, bb, local);
+ } END_FOR_EACH_PTR(bb);
+}
+
static void mark_bb_reachable(struct basic_block *bb, unsigned long generation)
{
struct basic_block *child;
diff --git a/flow.h b/flow.h
index 14cc144c..c8e12cf0 100644
--- a/flow.h
+++ b/flow.h
@@ -14,6 +14,7 @@ struct instruction;
extern int simplify_flow(struct entrypoint *ep);
+extern void kill_dead_stores(struct entrypoint *ep, pseudo_t addr, int local);
extern void simplify_symbol_usage(struct entrypoint *ep);
extern void simplify_memops(struct entrypoint *ep);
extern void pack_basic_blocks(struct entrypoint *ep);