libFirm
iredges.h File Reference

Public header for the automatically updating outs. More...

#include "firm_types.h"
#include "iredgekinds.h"
#include "begin.h"
#include "end.h"

Go to the source code of this file.

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.

Functions

const ir_edge_tget_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_tget_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_nodeget_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_tirg_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!

Detailed Description

Public header for the automatically updating outs.

Author
Sebastian Hack
Date
3.2.2005

Definition in file iredges.h.