|
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.