libFirm 1.20
|
Data Structures | |
union | loop_element |
Loop elements: loop nodes and ir nodes. More... | |
Typedefs | |
typedef struct ir_loop | ir_loop |
Loop. | |
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_loop * | get_irg_loop (const ir_graph *irg) |
Returns the root loop info (if exists) for an irg. | |
ir_loop * | get_irn_loop (const ir_node *n) |
Returns the loop n is contained in. | |
ir_loop * | get_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. |
Loop.
Definition at line 93 of file firm_types.h.
void assure_loopinfo | ( | ir_graph * | irg | ) |
Computes Intra-procedural control flow loop tree on demand.
irg | the graph |
void clear_backedges | ( | ir_node * | n | ) |
Clears all backedge information.
int construct_backedges | ( | ir_graph * | irg | ) |
Constructs backedge information and loop tree for a graph.
The algorithm views the program representation as a pure graph. It assumes that only block and phi nodes may be loop headers. The resulting loop tree is a possible visiting order for dataflow analysis.
This algorithm destoyes the link field of block nodes.
int construct_cf_backedges | ( | ir_graph * | irg | ) |
Construct Intra-procedural control flow loop tree for a IR-graph.
This constructs loop information resembling the program structure. It is useful for loop optimizations and analyses, as, e.g., finding iteration variables or loop invariant code motion.
This algorithm computes only back edge information for Block nodes, not for Phi nodes.
This algorithm destroyes the link field of block nodes.
irg | the graph |
void free_all_loop_information | ( | void | ) |
Removes loop information from all graphs in the current program.
void free_loop_information | ( | ir_graph * | irg | ) |
Removes all loop information.
Resets all backedges. Works for any construction algorithm.
Returns the loop n is contained in.
NULL if node is in no loop.
unsigned get_loop_depth | ( | const ir_loop * | loop | ) |
Returns nesting depth of this loop.
loop_element get_loop_element | ( | const ir_loop * | loop, |
size_t | pos | ||
) |
Returns a loop element.
A loop element can be interpreted as a kind pointer, an ir_node* or an ir_loop*.
void* get_loop_link | ( | const ir_loop * | loop | ) |
Returns field with additional loop information.
long get_loop_loop_nr | ( | const ir_loop * | loop | ) |
Returns a unique node number for the loop node to make output readable.
If libfirm_debug is not set it returns the loop cast to int.
size_t get_loop_n_elements | ( | const ir_loop * | loop | ) |
Returns the number of elements contained in loop.
int has_backedges | ( | const ir_node * | n | ) |
Returns non-zero if n has backedges.
int is_backedge | ( | const ir_node * | n, |
int | pos | ||
) |
Returns non-zero if the predecessor pos is a backedge.
int is_ir_loop | ( | const void * | thing | ) |
Tests whether a given pointer points to a loop.
thing
points to something with a firm_kind header Tests whether a value is loop invariant.
n | The node to be tested. |
block | A block node. |
Returns non-zero, if the node n is not changed in the loop block belongs to or in inner loops of this block.
void set_backedge | ( | ir_node * | n, |
int | pos | ||
) |
Marks edge pos as a backedge.
Sets the outermost loop in ir graph as basic access to loop tree.
void set_loop_link | ( | ir_loop * | loop, |
void * | link | ||
) |
A field to connect additional information to a loop.
void set_not_backedge | ( | ir_node * | n, |
int | pos | ||
) |
Marks edge pos as a non-backedge.