libFirm
Loading...
Searching...
No Matches

Functions

void add_End_keepalive (ir_node *end, ir_node *ka)
 Keep alive dedicated nodes.
 
void set_End_keepalives (ir_node *end, int n, ir_node *in[])
 Sets new keep-alives.
 
void remove_End_keepalive (ir_node *end, const ir_node *irn)
 Removes irn from the keep-alive set.
 
void remove_End_n (ir_node *end, int idx)
 Removes predecessor (a keepalive) at index idx from End node end.
 
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.
 
int get_End_n_keepalives (ir_node const *node)
 Get the number of End keepalives.
 
ir_nodeget_End_keepalive (ir_node const *node, int pos)
 Get the End keepalive with index pos.
 
void set_End_keepalive (ir_node *node, int pos, ir_node *keepalive)
 Set the End keepalive with index pos.
 
ir_node ** get_End_keepalive_arr (ir_node *node)
 Get an array of all End keepalives.
 
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

◆ add_End_keepalive()

void add_End_keepalive ( ir_node * end,
ir_node * ka )

Keep alive dedicated nodes.

These must be either PhiM or Block nodes.

◆ free_End()

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.

◆ get_End_keepalive()

ir_node * get_End_keepalive ( ir_node const * node,
int pos )

Get the End keepalive with index pos.

◆ get_End_keepalive_arr()

ir_node ** get_End_keepalive_arr ( ir_node * node)

Get an array of all End keepalives.

◆ get_End_n_keepalives()

int get_End_n_keepalives ( ir_node const * node)

Get the number of End keepalives.

◆ get_op_End()

ir_op * get_op_End ( void )

Returns opcode for End nodes.

◆ is_End()

int is_End ( const ir_node * node)

Test if node is a End.

Returns
1 if the node is a End node, 0 otherwise

◆ new_d_End()

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

◆ new_End()

ir_node * new_End ( int arity,
ir_node *const * in )

Construct an End node.

Parameters
aritysize of additional inputs array
inadditional inputs

◆ new_r_End()

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

◆ new_rd_End()

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

◆ remove_End_Bads_and_doublets()

void remove_End_Bads_and_doublets ( ir_node * end)

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

◆ remove_End_keepalive()

void remove_End_keepalive ( ir_node * end,
const ir_node * irn )

Removes irn from the keep-alive set.

◆ remove_End_n()

void remove_End_n ( ir_node * end,
int idx )

Removes predecessor (a keepalive) at index idx from End node end.

◆ set_End_keepalive()

void set_End_keepalive ( ir_node * node,
int pos,
ir_node * keepalive )

Set the End keepalive with index pos.

◆ set_End_keepalives()

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

◆ op_End

ir_op* op_End

End opcode.

Definition at line 1830 of file nodes.h.