libFirm
Reverse Edges

Out-Edges are the reverse of the edges in a firm graph (also called def-use edges) More...

Functions

unsigned get_irn_n_outs (const ir_node *node)
 Returns the number of successors of the node: More...
 
ir_nodeget_irn_out (const ir_node *def, unsigned pos)
 Returns the User of a node from the Def-Use edge at position pos. More...
 
ir_nodeget_irn_out_ex (const ir_node *def, unsigned pos, int *in_pos)
 Returns the User and its input position from the Def-Use edge of def at position pos. More...
 
unsigned get_Block_n_cfg_outs (const ir_node *node)
 Returns the number of control flow successors, ignore keep-alives. More...
 
unsigned get_Block_n_cfg_outs_ka (const ir_node *node)
 Returns the number of control flow successors, honor keep-alives. More...
 
ir_nodeget_Block_cfg_out (const ir_node *node, unsigned pos)
 Access predecessor n, ignore keep-alives. More...
 
ir_nodeget_Block_cfg_out_ex (const ir_node *node, unsigned pos, int *in_pos)
 Access predecessor n, ignore keep-alives also return its input position. More...
 
ir_nodeget_Block_cfg_out_ka (const ir_node *node, unsigned pos)
 Access predecessor n, honor keep-alives. More...
 
void irg_out_walk (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over the graph starting at node. More...
 
void irg_out_block_walk (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks only over Block nodes in the graph. More...
 
void compute_irg_outs (ir_graph *irg)
 Computes the out edges. More...
 
void assure_irg_outs (ir_graph *irg)
 Recomputes out edges if necessary. More...
 
void free_irg_outs (ir_graph *irg)
 Frees memory occupied by out edges data structures. More...
 

Detailed Description

Out-Edges are the reverse of the edges in a firm graph (also called def-use edges)

Function Documentation

◆ assure_irg_outs()

void assure_irg_outs ( ir_graph irg)

Recomputes out edges if necessary.

◆ compute_irg_outs()

void compute_irg_outs ( ir_graph irg)

Computes the out edges.

Sets a flag in irg to "outs_consistent". If the graph is changed this flag must be set to "outs_inconsistent". Computes out edges from block to floating nodes even if graph is in state "op_pin_state_floats".

◆ free_irg_outs()

void free_irg_outs ( ir_graph irg)

Frees memory occupied by out edges data structures.

◆ get_Block_cfg_out()

ir_node* get_Block_cfg_out ( const ir_node node,
unsigned  pos 
)

Access predecessor n, ignore keep-alives.

◆ get_Block_cfg_out_ex()

ir_node* get_Block_cfg_out_ex ( const ir_node node,
unsigned  pos,
int *  in_pos 
)

Access predecessor n, ignore keep-alives also return its input position.

◆ get_Block_cfg_out_ka()

ir_node* get_Block_cfg_out_ka ( const ir_node node,
unsigned  pos 
)

Access predecessor n, honor keep-alives.

◆ get_Block_n_cfg_outs()

unsigned get_Block_n_cfg_outs ( const ir_node node)

Returns the number of control flow successors, ignore keep-alives.

◆ get_Block_n_cfg_outs_ka()

unsigned get_Block_n_cfg_outs_ka ( const ir_node node)

Returns the number of control flow successors, honor keep-alives.

◆ get_irn_n_outs()

unsigned get_irn_n_outs ( const ir_node node)

Returns the number of successors of the node:

◆ get_irn_out()

ir_node* get_irn_out ( const ir_node def,
unsigned  pos 
)

Returns the User of a node from the Def-Use edge at position pos.

◆ get_irn_out_ex()

ir_node* get_irn_out_ex ( const ir_node def,
unsigned  pos,
int *  in_pos 
)

Returns the User and its input position from the Def-Use edge of def at position pos.

◆ irg_out_block_walk()

void irg_out_block_walk ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks only over Block nodes in the graph.

Has its own visited flag, so that it can be interleaved with the other walker. node must be either op_Block or mode_X.

◆ irg_out_walk()

void irg_out_walk ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over the graph starting at node.

Walks also if graph is in state "outs_inconsistent".