Expose the "trivial common parent" logic that we use for phi
[smatch.git] / flow.h
blob20f9fc82f52f19f2d7f6c147ef62f68e2b5215f3
1 #ifndef FLOW_H
2 #define FLOW_H
4 extern unsigned long bb_generation;
6 #define REPEAT_CSE 1
7 #define REPEAT_SYMBOL_CLEANUP 2
9 extern void simplify_symbol_usage(struct entrypoint *ep);
10 extern void simplify_flow(struct entrypoint *ep);
11 extern void simplify_memops(struct entrypoint *ep);
12 extern void pack_basic_blocks(struct entrypoint *ep);
14 extern void convert_instruction_target(struct instruction *insn, pseudo_t src);
15 extern void cleanup_and_cse(struct entrypoint *ep);
16 extern int simplify_instruction(struct instruction *);
18 extern void kill_bb(struct basic_block *);
19 extern void kill_use(pseudo_t *);
20 extern void kill_instruction(struct instruction *);
22 void convert_load_instruction(struct instruction *, pseudo_t);
23 void rewrite_load_instruction(struct instruction *, struct pseudo_list *);
24 int dominates(pseudo_t pseudo, struct instruction *insn, struct instruction *dom, int local);
26 extern void track_pseudo_usage(struct entrypoint *ep);
28 extern struct basic_block *trivial_common_parent(struct basic_block *, pseudo_t,
29 struct basic_block *, pseudo_t);
31 #endif