From: Sebastian Hack Date: Wed, 10 Aug 2005 11:11:16 +0000 (+0000) Subject: Added is_firm_be_node X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=42f34c5541c99888917aa989a9ef229a325b5d10;p=libfirm Added is_firm_be_node --- diff --git a/ir/be/beutil.c b/ir/be/beutil.c index 53c868c45..04e7e1b9f 100644 --- a/ir/be/beutil.c +++ b/ir/be/beutil.c @@ -133,3 +133,27 @@ void dump_ir_block_graph_sched(ir_graph *irg, const char *suffix) { dump_ir_block_graph(irg, suffix); set_dump_node_edge_hook(old); } + +static void clear_link(ir_node *irn, void *data) +{ + set_irn_link(irn, NULL); +} + +static void collect_phis(ir_node *irn, void *data) +{ + if(is_Phi(irn)) { + ir_node *bl = get_nodes_block(irn); + set_irn_link(irn, get_irn_link(bl)); + set_irn_link(bl, irn); + } +} + +void be_clear_links(ir_graph *irg) +{ + irg_walk_graph(irg, clear_link, NULL, NULL); +} + +void be_collect_phis(ir_graph *irg) +{ + irg_walk_graph(irg, collect_phis, NULL, NULL); +} diff --git a/ir/be/beutil.h b/ir/be/beutil.h index 9db6184eb..ca7e82be6 100644 --- a/ir/be/beutil.h +++ b/ir/be/beutil.h @@ -24,6 +24,11 @@ static INLINE const ir_node *get_block(const ir_node *irn) return is_Block(irn) ? irn : get_nodes_block(irn); } +static INLINE int is_firm_be_mode(const ir_mode *mode) +{ + return mode_is_data(mode); +} + /** * Check, if a node produces or consumes a data value. * If it does, it is significant for scheduling and register allocation. @@ -37,13 +42,13 @@ static INLINE int is_data_node(const ir_node *irn) int i, n; /* If the node produces a data value, return immediately. */ - if(mode_is_datab(get_irn_mode(irn))) + if(is_firm_be_mode(get_irn_mode(irn))) return 1; /* else check, if it takes a data value, if that is so, return */ for(i = 0, n = get_irn_arity(irn); i < n; ++i) { ir_node *op = get_irn_n(irn, i); - if(mode_is_datab(get_irn_mode(op))) + if(is_firm_be_mode(get_irn_mode(op))) return 1; }