X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firouts.c;h=c95fd431f064f676b045629e682ba26c4ebfb5c7;hb=a6888dd0c74a74aa5ec89d4542e402bda7cd61cb;hp=a7d1999a10aa15c962f9489f21c17615cb4a76bd;hpb=f8cc15664f571aa7ef89d6f6bc8d5bd2b8ca7d53;p=libfirm diff --git a/ir/ana/irouts.c b/ir/ana/irouts.c index a7d1999a1..c95fd431f 100644 --- a/ir/ana/irouts.c +++ b/ir/ana/irouts.c @@ -36,12 +36,7 @@ #include "util.h" #include "irprintf.h" #include "error.h" - -#ifdef DEBUG_libfirm -/* Note: ir_node.out_valid and ir_graph.n_outs are only present when DEBUG_libfirm is defined */ -/* Accesses to out_valid and n_outs are fenced out to avoid breakage - when compiling with neither DEBUG_libfirm or NDEBUG defined */ -#endif /* defined DEBUG_libfirm */ +#include "ircons.h" /*--------------------------------------------------------------------*/ /** Accessing the out datastructures **/ @@ -62,7 +57,6 @@ int get_irn_outs_computed(const ir_node *node) return node->out != NULL; } -/* returns the number of successors of the node: */ int get_irn_n_outs(const ir_node *node) { assert(node && node->kind == k_ir_node); @@ -73,7 +67,6 @@ int get_irn_n_outs(const ir_node *node) return node->out[0].pos; } -/* Access successor n */ ir_node *get_irn_out(const ir_node *def, int pos) { assert(pos >= 0 && pos < get_irn_n_outs(def)); @@ -83,7 +76,6 @@ ir_node *get_irn_out(const ir_node *def, int pos) return def->out[pos+1].use; } -/* Access successor n */ ir_node *get_irn_out_ex(const ir_node *def, int pos, int *in_pos) { assert(pos >= 0 && pos < get_irn_n_outs(def)); @@ -105,7 +97,6 @@ void set_irn_out(ir_node *def, int pos, ir_node *use, int in_pos) def->out[pos+1].pos = in_pos; } -/* Return the number of control flow successors, ignore keep-alives. */ int get_Block_n_cfg_outs(const ir_node *bl) { int i, n_cfg_outs = 0; @@ -121,7 +112,6 @@ int get_Block_n_cfg_outs(const ir_node *bl) return n_cfg_outs; } -/* Return the number of control flow successors, honor keep-alives. */ int get_Block_n_cfg_outs_ka(const ir_node *bl) { int i, n_cfg_outs = 0; @@ -147,7 +137,6 @@ int get_Block_n_cfg_outs_ka(const ir_node *bl) return n_cfg_outs; } -/* Access predecessor n, ignore keep-alives. */ ir_node *get_Block_cfg_out(const ir_node *bl, int pos) { int i; @@ -168,7 +157,6 @@ ir_node *get_Block_cfg_out(const ir_node *bl, int pos) return NULL; } -/* Access predecessor n, honor keep-alives. */ ir_node *get_Block_cfg_out_ka(const ir_node *bl, int pos) { int i, n_outs; @@ -231,7 +219,7 @@ void irg_out_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, { assert(node); ir_graph *irg = get_irn_irg(node); - if (is_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_OUTS)) { + if (irg_has_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_OUTS)) { inc_irg_visited (irg); irg_out_walk_2(node, pre, post, env); } @@ -260,8 +248,6 @@ static void irg_out_block_walk2(ir_node *bl, irg_walk_func *pre, } } -/* Walks only over Block nodes in the graph. Has its own visited - flag, so that it can be interleaved with the other walker. */ void irg_out_block_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env) { @@ -348,7 +334,7 @@ static int count_outs(ir_graph *irg) /* Now handle anchored nodes. We need the out count of those even if they are not visible. */ - for (i = anchor_last - 1; i >= 0; --i) { + for (i = anchor_last; i >= anchor_first; --i) { n = get_irg_anchor(irg, i); if (!irn_visited_else_mark(n)) { n->out = (ir_def_use_edge*) INT_TO_PTR(1); @@ -423,7 +409,7 @@ static ir_def_use_edge *set_out_edges(ir_graph *irg, ir_def_use_edge *free) free = _set_out_edges(get_irg_end(irg), free); /* handle anchored nodes */ - for (i = anchor_last - 1; i >= 0; --i) { + for (i = anchor_last; i >= anchor_first; --i) { n = get_irg_anchor(irg, i); if (!irn_visited_else_mark(n)) { size_t n_outs = PTR_TO_INT(n->out); @@ -438,7 +424,6 @@ static ir_def_use_edge *set_out_edges(ir_graph *irg, ir_def_use_edge *free) return free; } -/* compute the outs for a given graph */ void compute_irg_outs(ir_graph *irg) { ir_graph *rem = current_ir_graph; @@ -469,13 +454,13 @@ void compute_irg_outs(ir_graph *irg) /* Check how much memory we have used */ assert (end == (irg->outs + n_out_edges)); - set_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_OUTS); + add_irg_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_OUTS); current_ir_graph = rem; } void assure_irg_outs(ir_graph *irg) { - if (! is_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_OUTS)) + if (! irg_has_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_OUTS)) compute_irg_outs(irg); }