libFirm
End node

Last node of a graph. More...

Functions

int get_End_n_keepalives (const ir_node *end)
 Returns the number of Keep alive node.
ir_nodeget_End_keepalive (const ir_node *end, int pos)
 Returns the Keep alive node a position pos.
void add_End_keepalive (ir_node *end, ir_node *ka)
 Keep alive dedicated nodes.
void set_End_keepalive (ir_node *end, int pos, ir_node *ka)
 Sets the Keep alive node at position pos.
void set_End_keepalives (ir_node *end, int n, ir_node *in[])
 Sets new keep-alives.
void remove_End_keepalive (ir_node *end, ir_node *irn)
 Removes irn from the keep-alive set.
void remove_End_Bads_and_doublets (ir_node *end)
 Removes Bads, NoMem and doublets from the keep-alive set.
void free_End (ir_node *end)
 Some parts of the End node are allocated separately – their memory is not recovered by dead_node_elimination if a End node is dead.
ir_nodenew_rd_End (dbg_info *dbgi, ir_graph *irg, int arity, ir_node *const *in)
 Construct an End node.
ir_nodenew_r_End (ir_graph *irg, int arity, ir_node *const *in)
 Construct an End node.
ir_nodenew_d_End (dbg_info *dbgi, int arity, ir_node *const *in)
 Construct an End node.
ir_nodenew_End (int arity, ir_node *const *in)
 Construct an End node.
int is_End (const ir_node *node)
 Test if node is a End.
ir_opget_op_End (void)
 Returns opcode for End nodes.

Variables

ir_opop_End
 End opcode.

Detailed Description

Last node of a graph.

It references nodes in endless loops (so called keepalive edges)

Function Documentation

void add_End_keepalive ( ir_node end,
ir_node ka 
)

Keep alive dedicated nodes.

These must be either PhiM or Block nodes.

void free_End ( ir_node end)

Some parts of the End node are allocated separately – their memory is not recovered by dead_node_elimination if a End node is dead.

free_End() frees these data structures.

ir_node* get_End_keepalive ( const ir_node end,
int  pos 
)

Returns the Keep alive node a position pos.

int get_End_n_keepalives ( const ir_node end)

Returns the number of Keep alive node.

ir_op* get_op_End ( void  )

Returns opcode for End nodes.

int is_End ( const ir_node node)

Test if node is a End.

Returns
1 if the node is a End node, 0 otherwise
ir_node* new_d_End ( dbg_info dbgi,
int  arity,
ir_node *const *  in 
)

Construct an End node.

Parameters
dbgiA pointer to debug information.
aritysize of additional inputs array
inadditional inputs
ir_node* new_End ( int  arity,
ir_node *const *  in 
)

Construct an End node.

Parameters
aritysize of additional inputs array
inadditional inputs
ir_node* new_r_End ( ir_graph irg,
int  arity,
ir_node *const *  in 
)

Construct an End node.

Parameters
irgThe IR graph the node belongs to.
aritysize of additional inputs array
inadditional inputs
ir_node* new_rd_End ( dbg_info dbgi,
ir_graph irg,
int  arity,
ir_node *const *  in 
)

Construct an End node.

Parameters
dbgiA pointer to debug information.
irgThe IR graph the node belongs to.
aritysize of additional inputs array
inadditional inputs
void remove_End_Bads_and_doublets ( ir_node end)

Removes Bads, NoMem and doublets from the keep-alive set.

void remove_End_keepalive ( ir_node end,
ir_node irn 
)

Removes irn from the keep-alive set.

void set_End_keepalive ( ir_node end,
int  pos,
ir_node ka 
)

Sets the Keep alive node at position pos.

void set_End_keepalives ( ir_node end,
int  n,
ir_node in[] 
)

Sets new keep-alives.

Beware: This might be an expensive operation if dynamic edges are enabled, so avoid it in the backend.

Variable Documentation

ir_op* op_End

End opcode.

Definition at line 203 of file opcodes.h.