libFirm
|
Macros | |
#define | foreach_out_edge_kind(irn, edge, kind) for (ir_edge_t const *edge = get_irn_out_edge_first_kind(irn, kind); edge; edge = get_irn_out_edge_next(irn, edge)) |
A convenience iteration macro over all out edges of a node. | |
#define | foreach_out_edge_kind_safe(irn, edge, kind) |
A convenience iteration macro over all out edges of a node, which is safe against alteration of the current edge. | |
#define | foreach_out_edge(irn, edge) foreach_out_edge_kind(irn, edge, EDGE_KIND_NORMAL) |
Convenience macro for normal out edges. | |
#define | foreach_out_edge_safe(irn, edge) foreach_out_edge_kind_safe(irn, edge, EDGE_KIND_NORMAL) |
Convenience macro for normal out edges. | |
#define | foreach_block_succ(bl, edge) foreach_out_edge_kind(bl, edge, EDGE_KIND_BLOCK) |
A convenience iteration macro for all control flow edges. | |
#define | edges_reroute(old, nw) edges_reroute_kind(old, nw, EDGE_KIND_NORMAL) |
Convenience version of edges_reroute_kind() with EDGE_KIND_NORMAL. | |
#define | edges_activated(irg) (edges_activated_kind(irg, EDGE_KIND_NORMAL) && edges_activated_kind(irg, EDGE_KIND_BLOCK)) |
Conventience version of edges_activated_kind() for EDGE_KIND_NORMAL and EDGE_KIND_BLOCK. | |
#define | get_irn_n_edges(irn) get_irn_n_edges_kind(irn, EDGE_KIND_NORMAL) |
Conventience version of get_irn_n_edges_kind() with EDGE_KIND_NORMAL. | |
#define | get_irn_out_edge_first(irn) get_irn_out_edge_first_kind(irn, EDGE_KIND_NORMAL) |
Convenience version of get_irn_out_edge_first_kind() with EDGE_KIND_NORMAL. | |
#define | get_block_succ_first(irn) get_irn_out_edge_first_kind(irn, EDGE_KIND_BLOCK) |
Convenience version of get_irn_out_edge_first_kind() with EDGE_KIND_BLOCK. | |
#define | get_block_succ_next(irn, last) get_irn_out_edge_next(irn, last) |
Convenience version of get_irn_out_edge_next() with EDGE_KIND_BLOCK. |
Typedefs | |
typedef struct ir_edge_t | ir_edge_t |
Dynamic Reverse Edge. |
Enumerations | |
enum | ir_edge_kind_t { EDGE_KIND_FIRST, EDGE_KIND_NORMAL = EDGE_KIND_FIRST, EDGE_KIND_BLOCK, EDGE_KIND_DEP, EDGE_KIND_LAST } |
Supported Edge kinds. More... |
Functions | |
const ir_edge_t * | get_irn_out_edge_first_kind (const ir_node *irn, ir_edge_kind_t kind) |
Returns the first edge pointing to some node. | |
const ir_edge_t * | get_irn_out_edge_next (const ir_node *irn, const ir_edge_t *last) |
Returns the next edge in the out list of some node. | |
ir_node * | get_edge_src_irn (const ir_edge_t *edge) |
Returns the source node of an edge. | |
int | get_edge_src_pos (const ir_edge_t *edge) |
Returns the position of an edge. | |
int | get_irn_n_edges_kind (const ir_node *irn, ir_edge_kind_t kind) |
Returns the number of registered out edges for a specific kind. | |
int | edges_activated_kind (const ir_graph *irg, ir_edge_kind_t kind) |
Checks if the out edges are activated. | |
void | edges_activate_kind (ir_graph *irg, ir_edge_kind_t kind) |
Activates the edges for an irg. | |
void | edges_deactivate_kind (ir_graph *irg, ir_edge_kind_t kind) |
Deactivates the edges for an irg. | |
void | edges_reroute_kind (ir_node *old, ir_node *nw, ir_edge_kind_t kind) |
Reroutes edges of a specified kind from an old node to a new one. | |
void | edges_reroute_except (ir_node *old, ir_node *nw, ir_node *exception) |
reroutes (normal) edges from an old node to a new node, except for the exception which keeps its input even if it is old. | |
int | edges_verify (ir_graph *irg) |
Verifies the out edges of graph irg . | |
int | edges_verify_kind (ir_graph *irg, ir_edge_kind_t kind) |
Verifies a certrain kind of out edges of graph irg . | |
void | edges_init_dbg (int do_dbg) |
Sets edge verification flag. | |
ir_graph_pass_t * | irg_verify_edges_pass (const char *name, unsigned assert_on_problem) |
Creates an ir_graph pass for edges_verify(). | |
void | edges_activate (ir_graph *irg) |
Activates data and block edges for an irg. | |
void | edges_deactivate (ir_graph *irg) |
Deactivates data and block edges for an irg. | |
void | assure_edges (ir_graph *irg) |
Ensures that edges are activated. | |
void | assure_edges_kind (ir_graph *irg, ir_edge_kind_t kind) |
Ensures that edges of a given kind are activated. | |
void | irg_block_edges_walk (ir_node *block, irg_walk_func *pre, irg_walk_func *post, void *env) |
Walks only over Block nodes in the graph. | |
void | irg_walk_edges (ir_node *start, irg_walk_func *pre, irg_walk_func *post, void *env) |
Graph walker following EDGE_KIND_NORMAL edges. | |
void | edges_reset_private_data (ir_graph *irg, int offset, unsigned size) |
Reset the user's private data at offset 'offset' The user has to remember his offset and the size of his data! Caution: Using wrong values here can destroy other users private data! |
#define edges_activated | ( | irg | ) | (edges_activated_kind(irg, EDGE_KIND_NORMAL) && edges_activated_kind(irg, EDGE_KIND_BLOCK)) |
Conventience version of edges_activated_kind() for EDGE_KIND_NORMAL and EDGE_KIND_BLOCK.
#define edges_reroute | ( | old, | |
nw | |||
) | edges_reroute_kind(old, nw, EDGE_KIND_NORMAL) |
Convenience version of edges_reroute_kind() with EDGE_KIND_NORMAL.
#define foreach_block_succ | ( | bl, | |
edge | |||
) | foreach_out_edge_kind(bl, edge, EDGE_KIND_BLOCK) |
#define foreach_out_edge | ( | irn, | |
edge | |||
) | foreach_out_edge_kind(irn, edge, EDGE_KIND_NORMAL) |
#define foreach_out_edge_kind | ( | irn, | |
edge, | |||
kind | |||
) | for (ir_edge_t const *edge = get_irn_out_edge_first_kind(irn, kind); edge; edge = get_irn_out_edge_next(irn, edge)) |
#define foreach_out_edge_kind_safe | ( | irn, | |
edge, | |||
kind | |||
) |
A convenience iteration macro over all out edges of a node, which is safe against alteration of the current edge.
irn | The node. |
edge | An ir_edge_t pointer which shall be set to the current edge. |
kind | The kind of the edge. |
#define foreach_out_edge_safe | ( | irn, | |
edge | |||
) | foreach_out_edge_kind_safe(irn, edge, EDGE_KIND_NORMAL) |
#define get_block_succ_first | ( | irn | ) | get_irn_out_edge_first_kind(irn, EDGE_KIND_BLOCK) |
Convenience version of get_irn_out_edge_first_kind() with EDGE_KIND_BLOCK.
#define get_block_succ_next | ( | irn, | |
last | |||
) | get_irn_out_edge_next(irn, last) |
Convenience version of get_irn_out_edge_next() with EDGE_KIND_BLOCK.
#define get_irn_n_edges | ( | irn | ) | get_irn_n_edges_kind(irn, EDGE_KIND_NORMAL) |
Conventience version of get_irn_n_edges_kind() with EDGE_KIND_NORMAL.
#define get_irn_out_edge_first | ( | irn | ) | get_irn_out_edge_first_kind(irn, EDGE_KIND_NORMAL) |
Convenience version of get_irn_out_edge_first_kind() with EDGE_KIND_NORMAL.
Dynamic Reverse Edge.
Definition at line 72 of file firm_types.h.
enum ir_edge_kind_t |
Supported Edge kinds.
EDGE_KIND_NORMAL |
Normal data flow edges. |
EDGE_KIND_BLOCK |
Block to Block control flow edges. |
EDGE_KIND_DEP |
Dependency edges. |
Definition at line 34 of file iredgekinds.h.
void assure_edges | ( | ir_graph * | irg | ) |
Ensures that edges are activated.
irg | the IR graph |
void assure_edges_kind | ( | ir_graph * | irg, |
ir_edge_kind_t | kind | ||
) |
Ensures that edges of a given kind are activated.
irg | the IR graph |
kind | the edge kind |
void edges_activate | ( | ir_graph * | irg | ) |
Activates data and block edges for an irg.
If the irg phase is phase_backend, Dependence edges are additionally activated.
irg | The graph to activate the edges for. |
void edges_activate_kind | ( | ir_graph * | irg, |
ir_edge_kind_t | kind | ||
) |
Activates the edges for an irg.
irg | The graph to activate the edges for. |
kind | The edge kind. |
int edges_activated_kind | ( | const ir_graph * | irg, |
ir_edge_kind_t | kind | ||
) |
Checks if the out edges are activated.
irg | The graph. |
kind | The edge kind. |
void edges_deactivate | ( | ir_graph * | irg | ) |
Deactivates data and block edges for an irg.
If the irg phase is phase_backend, Dependence edges are additionally deactivated.
irg | The graph. |
void edges_deactivate_kind | ( | ir_graph * | irg, |
ir_edge_kind_t | kind | ||
) |
Deactivates the edges for an irg.
irg | The graph. |
kind | The edge kind. |
void edges_init_dbg | ( | int | do_dbg | ) |
Sets edge verification flag.
reroutes (normal) edges from an old node to a new node, except for the exception
which keeps its input even if it is old.
void edges_reroute_kind | ( | ir_node * | old, |
ir_node * | nw, | ||
ir_edge_kind_t | kind | ||
) |
Reroutes edges of a specified kind from an old node to a new one.
old | the old node |
nw | the new node |
kind | the edge kind |
void edges_reset_private_data | ( | ir_graph * | irg, |
int | offset, | ||
unsigned | size | ||
) |
Reset the user's private data at offset 'offset' The user has to remember his offset and the size of his data! Caution: Using wrong values here can destroy other users private data!
irg | the IR graph to operate on |
offset | offset of the private data inside the edge |
size | length of the private data inside the edge |
int edges_verify | ( | ir_graph * | irg | ) |
Verifies the out edges of graph irg
.
int edges_verify_kind | ( | ir_graph * | irg, |
ir_edge_kind_t | kind | ||
) |
Verifies a certrain kind of out edges of graph irg
.
Returns the source node of an edge.
edge | The edge. |
int get_edge_src_pos | ( | const ir_edge_t * | edge | ) |
Returns the position of an edge.
edge | The edge. |
int get_irn_n_edges_kind | ( | const ir_node * | irn, |
ir_edge_kind_t | kind | ||
) |
Returns the number of registered out edges for a specific kind.
irn | The node. |
kind | The kind. |
const ir_edge_t* get_irn_out_edge_first_kind | ( | const ir_node * | irn, |
ir_edge_kind_t | kind | ||
) |
Returns the first edge pointing to some node.
irn | The node. |
kind | The kind of the edge. |
Returns the next edge in the out list of some node.
irn | The node. |
last | The last out edge you have seen. |
irn
's out list after last
. void irg_block_edges_walk | ( | ir_node * | block, |
irg_walk_func * | pre, | ||
irg_walk_func * | post, | ||
void * | env | ||
) |
Walks only over Block nodes in the graph.
Uses the block visited flag, so that it can be interleaved with another walker.
block | the start block |
pre | the pre visit function |
post | the post visit function |
env | the environment for the walker |
ir_graph_pass_t* irg_verify_edges_pass | ( | const char * | name, |
unsigned | assert_on_problem | ||
) |
Creates an ir_graph pass for edges_verify().
name | the name of this pass or NULL |
assert_on_problem | assert if problems were found |
void irg_walk_edges | ( | ir_node * | start, |
irg_walk_func * | pre, | ||
irg_walk_func * | post, | ||
void * | env | ||
) |
Graph walker following EDGE_KIND_NORMAL edges.