18 #ifndef FIRM_ANA_IRLOOP_H 19 #define FIRM_ANA_IRLOOP_H 23 #include "firm_types.h" 24 #include "firm_common.h" long get_loop_loop_nr(const ir_loop *loop)
Returns a unique node number for the loop node to make output readable.
firm_kind
A list of firm kinds.
ir_loop * get_irn_loop(const ir_node *n)
Returns the loop n is contained in.
void set_irg_loop(ir_graph *irg, ir_loop *l)
Sets the outermost loop in ir graph as basic access to loop tree.
void assure_loopinfo(ir_graph *irg)
Computes Intra-procedural control flow loop tree on demand.
int is_backedge(const ir_node *n, int pos)
Returns non-zero if the predecessor pos is a backedge.
ir_loop * get_irg_loop(const ir_graph *irg)
Returns the root loop info (if exists) for an irg.
loop_element get_loop_element(const ir_loop *loop, size_t pos)
Returns a loop element.
void set_loop_link(ir_loop *loop, void *link)
A field to connect additional information to a loop.
unsigned get_loop_depth(const ir_loop *loop)
Returns nesting depth of this loop.
firm_kind * kind
is either k_ir_node or k_ir_loop
Loop elements: loop nodes and ir nodes.
ir_loop * get_loop_outer_loop(const ir_loop *loop)
Returns outer loop, itself if outermost.
struct ir_loop ir_loop
Loop.
ir_node * node
Pointer to an ir_node element.
void clear_backedges(ir_node *n)
Clears all backedge information.
void construct_cf_backedges(ir_graph *irg)
Construct Intra-procedural control flow loop tree for a IR-graph.
int is_loop_invariant(const ir_node *n, const ir_node *block)
Tests whether a value is loop invariant.
size_t get_loop_n_elements(const ir_loop *loop)
Returns the number of elements contained in loop.
void free_loop_information(ir_graph *irg)
Removes all loop information.
ir_graph * irg
Pointer to an ir_graph element (only callgraph loop trees)
int has_backedges(const ir_node *n)
Returns non-zero if n has backedges.
void set_backedge(ir_node *n, int pos)
Marks edge pos as a backedge.
struct ir_node ir_node
Procedure Graph Node.
struct ir_graph ir_graph
Procedure Graph.
ir_loop * son
Pointer to an ir_loop element.
void * get_loop_link(const ir_loop *loop)
Returns field with additional loop information.