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.