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, kind)) |
A convenience iteration macro over all out edges of a node. More... | |
#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. More... | |
#define | foreach_out_edge(irn, edge) foreach_out_edge_kind(irn, edge, EDGE_KIND_NORMAL) |
Convenience macro for normal out edges. More... | |
#define | foreach_out_edge_safe(irn, edge) foreach_out_edge_kind_safe(irn, edge, EDGE_KIND_NORMAL) |
Convenience macro for normal out edges. More... | |
#define | foreach_block_succ(bl, edge) foreach_out_edge_kind(bl, edge, EDGE_KIND_BLOCK) |
A convenience iteration macro for all control flow edges. More... | |
Typedefs | |
typedef struct ir_edge_t | ir_edge_t |
Dynamic Reverse Edge. More... | |
Enumerations | |
enum | ir_edge_kind_t { EDGE_KIND_NORMAL, EDGE_KIND_FIRST = EDGE_KIND_NORMAL, EDGE_KIND_BLOCK, EDGE_KIND_LAST = EDGE_KIND_BLOCK } |
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. More... | |
const ir_edge_t * | get_irn_out_edge_first (const ir_node *irn) |
Returns the first edge pointing to some node. More... | |
const ir_edge_t * | get_block_succ_first (const ir_node *block) |
Returns the first edge pointing to a successor block. More... | |
const ir_edge_t * | get_irn_out_edge_next (const ir_node *irn, const ir_edge_t *last, ir_edge_kind_t kind) |
Returns the next edge in the out list of some node. More... | |
ir_node * | get_edge_src_irn (const ir_edge_t *edge) |
Returns the source node of an edge. More... | |
int | get_edge_src_pos (const ir_edge_t *edge) |
Returns the position of an edge. More... | |
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. More... | |
int | get_irn_n_edges (const ir_node *irn) |
Returns the number of registered out edges with EDGE_KIND_NORMAL. More... | |
int | edges_activated_kind (const ir_graph *irg, ir_edge_kind_t kind) |
Checks if the out edges are activated. More... | |
int | edges_activated (const ir_graph *irg) |
Checks if out edges with EDG_KIND_NORMAL and EDGE_KIND_BLOCK are activated. More... | |
void | edges_activate_kind (ir_graph *irg, ir_edge_kind_t kind) |
Activates the edges for an irg. More... | |
void | edges_deactivate_kind (ir_graph *irg, ir_edge_kind_t kind) |
Deactivates the edges for an irg. More... | |
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. More... | |
void | edges_reroute (ir_node *old, ir_node *nw) |
Reroutes edges of EDGE_KIND_NORMAL from an old node to a new one. More... | |
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 node which keeps its input even if it is old . More... | |
int | edges_verify (ir_graph *irg) |
Verifies the out edges of graph irg . More... | |
int | edges_verify_kind (ir_graph *irg, ir_edge_kind_t kind) |
Verifies a certrain kind of out edges of graph irg . More... | |
void | edges_init_dbg (int do_dbg) |
Sets edge verification flag. More... | |
void | edges_activate (ir_graph *irg) |
Activates data and block edges for an irg. More... | |
void | edges_deactivate (ir_graph *irg) |
Deactivates data and block edges for an irg. More... | |
void | assure_edges (ir_graph *irg) |
Ensures that edges are activated. More... | |
void | assure_edges_kind (ir_graph *irg, ir_edge_kind_t kind) |
Ensures that edges of a given kind are activated. More... | |
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. More... | |
void | irg_walk_edges (ir_node *start, irg_walk_func *pre, irg_walk_func *post, void *env) |
Graph walker following EDGE_KIND_NORMAL edges. More... | |
#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, kind)) |
#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) |
Dynamic Reverse Edge.
Definition at line 62 of file firm_types.h.
enum ir_edge_kind_t |
Supported Edge kinds.
Enumerator | |
---|---|
EDGE_KIND_NORMAL |
Normal data flow edges. |
EDGE_KIND_FIRST | |
EDGE_KIND_BLOCK |
Block to Block control flow edges. |
EDGE_KIND_LAST |
Definition at line 20 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 | ( | const ir_graph * | irg | ) |
Checks if out edges with EDG_KIND_NORMAL and EDGE_KIND_BLOCK are activated.
irg | The graph. |
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 edges of EDGE_KIND_NORMAL from an old node to a new one.
old | the old node |
nw | the new node |
reroutes (normal) edges from an old node to a new node, except for the exception
node 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 |
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 first edge pointing to a successor block.
You can navigate the list with the usual get_irn_out_edge_next().
block | the Block |
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 | ( | const ir_node * | irn | ) |
Returns the number of registered out edges with EDGE_KIND_NORMAL.
irn | The node. |
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. |
Returns the first edge pointing to some node.
irn | The node. |
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. |
const ir_edge_t* get_irn_out_edge_next | ( | const ir_node * | irn, |
const ir_edge_t * | last, | ||
ir_edge_kind_t | kind | ||
) |
Returns the next edge in the out list of some node.
irn | The node. |
last | The last out edge you have seen. |
kind | the kind of edge that are iterated |
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 |
void irg_walk_edges | ( | ir_node * | start, |
irg_walk_func * | pre, | ||
irg_walk_func * | post, | ||
void * | env | ||
) |
Graph walker following EDGE_KIND_NORMAL edges.