libFirm 1.20
libfirm/irloop.h File Reference

Loop datastructure and access functions. More...

#include "firm_types.h"
#include "firm_common.h"
#include "begin.h"
#include "end.h"

Go to the source code of this file.

Data Structures

union  loop_element
 Loop elements: loop nodes and ir nodes. More...

Functions

int is_backedge (const ir_node *n, int pos)
 Returns non-zero if the predecessor pos is a backedge.
void set_backedge (ir_node *n, int pos)
 Marks edge pos as a backedge.
void set_not_backedge (ir_node *n, int pos)
 Marks edge pos as a non-backedge.
int has_backedges (const ir_node *n)
 Returns non-zero if n has backedges.
void clear_backedges (ir_node *n)
 Clears all backedge information.
int is_ir_loop (const void *thing)
 Tests whether a given pointer points to a loop.
void set_irg_loop (ir_graph *irg, ir_loop *l)
 Sets the outermost loop in ir graph as basic access to loop tree.
ir_loopget_irg_loop (const ir_graph *irg)
 Returns the root loop info (if exists) for an irg.
ir_loopget_irn_loop (const ir_node *n)
 Returns the loop n is contained in.
ir_loopget_loop_outer_loop (const ir_loop *loop)
 Returns outer loop, itself if outermost.
unsigned get_loop_depth (const ir_loop *loop)
 Returns nesting depth of this loop.
size_t get_loop_n_elements (const ir_loop *loop)
 Returns the number of elements contained in loop.
loop_element get_loop_element (const ir_loop *loop, size_t pos)
 Returns a loop element.
long get_loop_loop_nr (const ir_loop *loop)
 Returns a unique node number for the loop node to make output readable.
void set_loop_link (ir_loop *loop, void *link)
 A field to connect additional information to a loop.
void * get_loop_link (const ir_loop *loop)
 Returns field with additional loop information.
int construct_backedges (ir_graph *irg)
 Constructs backedge information and loop tree for a graph.
int construct_cf_backedges (ir_graph *irg)
 Construct Intra-procedural control flow loop tree for a IR-graph.
void assure_loopinfo (ir_graph *irg)
 Computes Intra-procedural control flow loop tree on demand.
void free_loop_information (ir_graph *irg)
 Removes all loop information.
void free_all_loop_information (void)
 Removes loop information from all graphs in the current program.
int is_loop_invariant (const ir_node *n, const ir_node *block)
 Tests whether a value is loop invariant.

Detailed Description

Loop datastructure and access functions.

Author:
Goetz Lindenmaier
Date:
7.2002

Computes backedges in the control and data flow.

Note:
Only Block and Phi nodes can have incoming backedges. Constructs loops data structure: indicates loop nesting.

Definition in file irloop.h.