X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firouts.h;h=5bf7cd6af25136d99ed9492f0c32add4a4521ebe;hb=d0d85962ef52c14950db90e5981a7bea36023ab3;hp=84a586b719f5076486ca72bf3b6d85f85c6ccd5d;hpb=2f9012ff28c1eb89080d4c5cda525e57051c02f3;p=libfirm diff --git a/ir/ana/irouts.h b/ir/ana/irouts.h index 84a586b71..5bf7cd6af 100644 --- a/ir/ana/irouts.h +++ b/ir/ana/irouts.h @@ -11,20 +11,19 @@ */ /** -* @file irouts.h -* -* Implements Def-Use edges, also called outedges. -* -* @author Goetz Lindenmaier -* -* @todo eventually add reverse conrtol flow graph. (If needed.) -*/ - -/* $Id$ */ + * @file irouts.h + * + * Implements Def-Use edges, also called outedges. + * + * @author Goetz Lindenmaier + * + * @todo eventually add reverse conrtol flow graph. (If needed.) + */ # ifndef _IROUTS_H_ # define _IROUTS_H_ +# include "firm_types.h" # include "irgraph.h" # include "irnode.h" @@ -36,28 +35,30 @@ /** To iterate through the successors iterate from 0 to i < get_irn_outs(). No order of successors guaranteed. Will return edges from block to floating - nodes even if irgraph is in state "floats". */ + nodes even if irgraph is in state "op_pin_state_floats". */ /* returns the number of successors of the node: */ int get_irn_n_outs (ir_node *node); /** Get predecessor n */ -INLINE ir_node *get_irn_out (ir_node *node, int pos); +ir_node *get_irn_out (ir_node *node, int pos); /** Set predecessor n */ -INLINE void set_irn_out (ir_node *node, int pos, ir_node *out); +void set_irn_out (ir_node *node, int pos, ir_node *out); /* Methods to iterate through the control flow graph. Iterate from 0 to i < get_Block_cfg_outs(block). No order of successors guaranteed. */ -int get_Block_n_cfg_outs (ir_node *node); -/** Access predecessor n. */ -INLINE ir_node *get_Block_cfg_out (ir_node *node, int pos); +/** Return the number of control flow successors, ignore keep-alives. */ +int get_Block_n_cfg_outs (ir_node *node); + +/** Return the number of control flow successors, honor keep-alives. */ +int get_Block_n_cfg_outs_ka (ir_node *node); -#ifndef _IRG_WALK_FUNC_TYPEDEF_ -#define _IRG_WALK_FUNC_TYPEDEF_ -/** The type of the walk function */ -typedef void irg_walk_func(ir_node *, void *); -#endif +/** Access predecessor n, ignore keep-alives. */ +ir_node *get_Block_cfg_out (ir_node *node, int pos); + +/** Access predecessor n, honor keep-alives. */ +ir_node *get_Block_cfg_out_ka (ir_node *node, int pos); /** Walks over the graph starting at node. Walks also if graph is in state "outs_inconsistent". Assumes current_ir_graph is set properly. */ @@ -79,12 +80,17 @@ void irg_out_block_walk(ir_node *node, /** Computes the out edges. Sets a flag in irg to "outs_consistent". If the graph is changed this flag must be set to "outs_inconsistent". Computes out edges from block to floating nodes even if graph is in state - "floats". Optimizes Tuple nodes. */ -void compute_outs(ir_graph *irg); + "op_pin_state_floats". Optimizes Tuple nodes. */ +void compute_irg_outs(ir_graph *irg); +void compute_irp_outs(void); + +void assure_irg_outs(ir_graph *irg); + /** Computes the out edges in interprocedural view */ void compute_ip_outs(void); -/** Frees the out datastructures. Sets the flag in irg to "no_outs". */ +/** Frees the out datastructures. Sets the flag in irg to "outs_none". */ void free_ip_outs(void); -void free_outs(ir_graph *irg); +void free_irg_outs(ir_graph *irg); +void free_irp_outs(void); #endif /* _IROUTS_H_ */