libFirm
Nodes

ir_node - a datatype representing a Firm node More...

Modules

 Node Opcodes
 This module specifies the opcodes possible for ir nodes.
 ASM node
 executes assembler fragments of the target machine.
 Add node
 returns the sum of its operands
 Alloc node
 allocates a block of memory.
 Anchor node
 utiliy node used to "hold" nodes in a graph that might possibly not be reachable by other means or which should be reachable immediately without searching through the graph.
 And node
 returns the result of a bitwise and operation of its operands
 Bad node
 Bad nodes indicate invalid input, which is values which should never be computed.
 Block node
 A basic block.
 Borrow node
 Returns the borrow bit from and implied subtractions of its 2 operands.
 Bound node
 Performs a bounds-check: if lower <= index < upper then return index, otherwise throw an exception.
 Builtin node
 performs a backend-specific builtin.
 Call node
 Calls other code.
 Carry node
 Computes the value of the carry-bit that would result when adding the 2 operands.
 Cast node
 perform a high-level type cast
 Cmp node
 Compares its two operands and checks whether a specified relation (like less or equal) is fulfilled.
 Cond node
 Conditionally change control flow.
 Confirm node
 Specifies constraints for a value.
 Const node
 Returns a constant value.
 Conv node
 Converts values between modes.
 CopyB node
 Copies a block of memory with statically known size/type.
 Deleted node
 Internal node which is temporary set to nodes which are already removed from the graph.
 Div node
 returns the quotient of its 2 operands
 Dummy node
 A placeholder value.
 End node
 Last node of a graph.
 Eor node
 returns the result of a bitwise exclusive or operation of its operands.
 Free node
 Frees a block of memory previously allocated by an Alloc node.
 IJmp node
 Jumps to the code in its argument.
 Id node
 Returns its operand unchanged.
 InstOf node
 Tests whether an object is an instance of a class-type.
 Jmp node
 Jumps to the block connected through the out-value.
 Load node
 Loads a value from memory (heap or stack).
 Minus node
 returns the additive inverse of its operand
 Mod node
 returns the remainder of its operands from an implied division.
 Mul node
 returns the product of its operands
 Mulh node
 returns the upper word of the product of its operands (the part which would not fit into the result mode of a normal Mul anymore)
 Mux node
 returns the false or true operand depending on the value of the sel operand
 NoMem node
 Placeholder node for cases where you don't need any memory input.
 Not node
 returns the bitwise complement of a value.
 Or node
 returns the result of a bitwise or operation of its operands
 Phi node
 Choose a value based on control flow.
 Pin node
 Pin the value of the node node in the current block.
 Proj node
 returns an entry of a tuple value
 Raise node
 Raises an exception.
 Return node
 Returns from the current function.
 Rotl node
 Returns its first operand bits rotated left by the amount in the 2nd operand.
 Sel node
 Computes the address of a entity of a compound type given the base address of an instance of the compound type.
 Shl node
 Returns its first operands bits shifted left by the amount of the 2nd operand.
 Shr node
 Returns its first operands bits shifted right by the amount of the 2nd operand.
 Shrs node
 Returns its first operands bits shifted right by the amount of the 2nd operand.
 Start node
 The first node of a graph.
 Store node
 Stores a value into memory (heap or stack).
 Sub node
 returns the difference of its operands
 Switch node
 Change control flow.
 SymConst node
 A symbolic constant.
 Sync node
 The Sync operation unifies several partial memory blocks.
 Tuple node
 Builds a Tuple from single values.
 Unknown node
 Returns an unknown (at compile- and runtime) value.

Typedefs

typedef struct ir_node ir_node
 Procedure Graph Node.

Enumerations

enum  ir_relation {
  ir_relation_false = 0, ir_relation_equal = 1u << 0, ir_relation_less = 1u << 1, ir_relation_greater = 1u << 2,
  ir_relation_unordered = 1u << 3, ir_relation_less_equal = ir_relation_equal|ir_relation_less, ir_relation_greater_equal = ir_relation_equal|ir_relation_greater, ir_relation_less_greater = ir_relation_less|ir_relation_greater,
  ir_relation_less_equal_greater = ir_relation_equal|ir_relation_less|ir_relation_greater, ir_relation_unordered_equal = ir_relation_unordered|ir_relation_equal, ir_relation_unordered_less = ir_relation_unordered|ir_relation_less, ir_relation_unordered_less_equal = ir_relation_unordered|ir_relation_less|ir_relation_equal,
  ir_relation_unordered_greater = ir_relation_unordered|ir_relation_greater, ir_relation_unordered_greater_equal = ir_relation_unordered|ir_relation_greater|ir_relation_equal, ir_relation_unordered_less_greater = ir_relation_unordered|ir_relation_less|ir_relation_greater, ir_relation_true = ir_relation_equal|ir_relation_less|ir_relation_greater|ir_relation_unordered
}
 Relations for comparing numbers. More...
enum  ir_cons_flags {
  cons_none = 0, cons_volatile = 1U << 0, cons_unaligned = 1U << 1, cons_floats = 1U << 2,
  cons_throws_exception = 1U << 3
}
 constrained flags for memory operations. More...
enum  op_pin_state { op_pin_state_floats = 0, op_pin_state_pinned = 1, op_pin_state_exc_pinned, op_pin_state_mem_pinned }
 pinned states. More...

Functions

int is_ir_node (const void *thing)
 Checks whether a pointer points to a ir node.
int get_irn_arity (const ir_node *node)
 Returns the number of predecessors without the block predecessor.
ir_nodeget_irn_n (const ir_node *node, int n)
 Returns the n-th predecessor of a node.
void set_irn_in (ir_node *node, int arity, ir_node *in[])
 Replaces the old in array by a new one that will contain the ins given in the parameters.
void add_irn_dep (ir_node *node, ir_node *dep)
 Add an artificial dependency to the node.
void add_irn_deps (ir_node *tgt, ir_node *src)
 Copy all dependencies from a node to another.
int get_irn_deps (const ir_node *node)
 Returns the length of the dependency array.
ir_nodeget_irn_dep (const ir_node *node, int pos)
 Returns an entry of the dependency array.
void set_irn_dep (ir_node *node, int pos, ir_node *dep)
 Sets an entry of the dependency array.
void delete_irn_dep (ir_node *node, ir_node *dep)
 Deletes the entry of the dependency array, that points to dep.
void set_irn_n (ir_node *node, int n, ir_node *in)
 Replaces the n-th predecessor of a node with a new one.
int add_irn_n (ir_node *node, ir_node *in)
 Appends a new predecessor to a node.
void set_irn_mode (ir_node *node, ir_mode *mode)
 Sets the mode struct of node.
ir_modeget_irn_mode (const ir_node *node)
 Returns the mode struct of a node.
ir_opget_irn_op (const ir_node *node)
 Returns the opcode struct of the node.
void set_irn_op (ir_node *node, ir_op *op)
 Sets the opcode struct of the node.
unsigned get_irn_opcode (const ir_node *node)
 Returns the opcode-enum of the node.
const char * get_irn_opname (const ir_node *node)
 Returns the string representation of the opcode.
identget_irn_opident (const ir_node *node)
 Returns the ident for a string representation of the opcode.
ir_visited_t get_irn_visited (const ir_node *node)
 Returns the visited counter of a node.
void set_irn_visited (ir_node *node, ir_visited_t visited)
 Sets the visited counter of a node.
void mark_irn_visited (ir_node *node)
 Sets visited to get_irg_visited(current_ir_graph).
int irn_visited (const ir_node *node)
 Returns 1 if visited >= get_irg_visited(current_ir_graph).
int irn_visited_else_mark (ir_node *node)
 Returns 1 if visited >= get_irg_visited(current_ir_graph).
void set_irn_link (ir_node *node, void *link)
 Sets the link of a node.
void * get_irn_link (const ir_node *node)
 Returns the link of a node.
ir_graphget_irn_irg (const ir_node *node)
 Returns the ir_graph this node belongs to.
long get_irn_node_nr (const ir_node *node)
 Outputs a unique number for this node if libFIRM is compiled for debugging, (configure with –enable-debug) else returns address of node cast to long.
op_pin_state get_irn_pinned (const ir_node *node)
 Returns the pinned state of a node.
void set_irn_pinned (ir_node *node, op_pin_state state)
 Sets pin state for nodes with op pin state op_pin_state_exc_pinned.
op_pin_state is_irn_pinned_in_irg (const ir_node *node)
 Returns whether the node is currently pinned.
ir_nodenew_ir_node (dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mode, int arity, ir_node *const *in)
 IR node constructor.
ir_typeis_frame_pointer (const ir_node *n)
 Tests whether arbitrary node is frame pointer.
const char * get_builtin_kind_name (ir_builtin_kind kind)
 Returns a human readable string for the ir_builtin_kind.
int is_unop (const ir_node *node)
 Tests whether node is an unary operation (opcode arity is oparity_unary)
ir_nodeget_unop_op (const ir_node *node)
 Returns (arithmetic) operand of unary operation node.
void set_unop_op (ir_node *node, ir_node *op)
 Sets (arithmetic) operand of unary operation node.
int is_binop (const ir_node *node)
 Tests whether node is a binary operation (opcode arity is oparity_binary)
ir_nodeget_binop_left (const ir_node *node)
 Returns left operand of binary operation node.
void set_binop_left (ir_node *node, ir_node *left)
 Sets left operand of binary operation node.
ir_nodeget_binop_right (const ir_node *node)
 Returns rights operand of binary operation node.
void set_binop_right (ir_node *node, ir_node *right)
 Sets right operand of binary operation node.
int is_x_except_Proj (const ir_node *node)
 Tests whether a node is the X_except Proj of a fragile operation.
int is_x_regular_Proj (const ir_node *node)
 Tests whether a node is the X_regular Proj of a fragile operation.
void ir_set_throws_exception (ir_node *node, int throws_exception)
 Sets throws exception attribute of a fragile node throws_exception must be 0 or 1.
int ir_throws_exception (const ir_node *node)
 Returns throws_exception attribute of a fragile node.
const char * get_relation_string (ir_relation relation)
 Returns the name of an ir_relation.
ir_relation get_negated_relation (ir_relation relation)
 Calculates the negated (Complement(R)) relation, i.e.
ir_relation get_inversed_relation (ir_relation relation)
 Calculates the inversed (R^-1) relation, i.e., "<" –> ">".
int is_memop (const ir_node *node)
 Returns true if node is a memory operation.
ir_nodeget_memop_mem (const ir_node *node)
 Returns the memory input of a memory operation.
void set_memop_mem (ir_node *node, ir_node *mem)
 Sets the memory input of a memory operation.
int is_arg_Proj (const ir_node *node)
 Returns non-zero if a node is a routine parameter.
ir_nodeskip_Proj (ir_node *node)
 Returns operand of node if node is a Proj.
const ir_nodeskip_Proj_const (const ir_node *node)
 Returns operand of node if node is a Proj.
ir_nodeskip_Id (ir_node *node)
 Returns operand of node if node is a Id.
ir_nodeskip_Tuple (ir_node *node)
 Returns corresponding operand of Tuple if node is a Proj from a Tuple.
ir_nodeskip_Cast (ir_node *node)
 Returns operand of node if node is a Cast.
const ir_nodeskip_Cast_const (const ir_node *node)
 Returns operand of node if node is a Cast.
ir_nodeskip_Pin (ir_node *node)
 Returns operand of node if node is a Pin.
ir_nodeskip_Confirm (ir_node *node)
 Returns operand of node if node is a Confirm.
ir_nodeskip_HighLevel_ops (ir_node *node)
 Skip all high-level Operations (including Cast, Confirm).
int is_cfop (const ir_node *node)
 Returns true if the operation manipulates control flow.
int is_unknown_jump (const ir_node *node)
 Returns true if the operation jumps to an unknown destination.
int is_fragile_op (const ir_node *node)
 Returns true if the operation can change the control flow because of an exception: Call, Div, Mod, Load, Store, Alloc, Bad.
int is_irn_forking (const ir_node *node)
 Returns true if the operation is a forking control flow operation: Cond.
void copy_node_attr (ir_graph *irg, const ir_node *old_node, ir_node *new_node)
 Copies attributes stored in the old node to a new node.
ir_typeget_irn_type_attr (ir_node *n)
 Returns the type attribute of a node n (SymConst, Call, Alloc, Free, Cast) or NULL.
ir_entityget_irn_entity_attr (ir_node *n)
 Returns the entity attribute of a node n (SymConst, Sel) or NULL.
int is_irn_constlike (const ir_node *node)
 Returns non-zero for constant-like nodes.
int is_irn_keep (const ir_node *node)
 Returns non-zero for nodes that are allowed to have keep-alives and are neither Block nor PhiM.
int is_irn_start_block_placed (const ir_node *node)
 Returns non-zero for nodes that are always placed in the start block.
int is_irn_cse_neutral (const ir_node *node)
 Returns non-zero for nodes that are CSE neutral to its users.
const char * get_cond_jmp_predicate_name (cond_jmp_predicate pred)
 Returns the string representation of the jump prediction.
void * get_irn_generic_attr (ir_node *node)
 Returns a pointer to the node attributes.
const void * get_irn_generic_attr_const (const ir_node *node)
 Returns a pointer to the node attributes.
unsigned get_irn_idx (const ir_node *node)
 Returns the unique node index for the node in its graph.
void set_irn_dbg_info (ir_node *n, dbg_info *db)
 Sets the debug information of a node.
dbg_infoget_irn_dbg_info (const ir_node *n)
 Returns the debug information of an node.
const char * gdb_node_helper (void *firm_object)
 Returns a descriptive name of a node (containing type+number)

Detailed Description

ir_node - a datatype representing a Firm node

The common fields are:

Typedef Documentation

typedef struct ir_node ir_node

Procedure Graph Node.

Definition at line 63 of file firm_types.h.

Enumeration Type Documentation

constrained flags for memory operations.

Enumerator:
cons_none 

No constrains.

cons_volatile 

Memory operation is volatile.

cons_unaligned 

Memory operation is unaligned.

cons_floats 

Memory operation can float.

cons_throws_exception 

fragile op throws exception (and produces X_regular and X_except values)

Definition at line 209 of file firm_types.h.

Relations for comparing numbers.

Enumerator:
ir_relation_false 

always false

ir_relation_equal 

equal

ir_relation_less 

less

ir_relation_greater 

greater

ir_relation_unordered 

unordered

ir_relation_less_equal 

less or equal

ir_relation_greater_equal 

greater or equal

ir_relation_less_equal_greater 

less or greater ('not equal' for integer numbers)

less equal or greater ('not unordered')

ir_relation_unordered_equal 

unordered or equal

ir_relation_unordered_less 

unordered or less

ir_relation_unordered_less_equal 

unordered, less or equal

ir_relation_unordered_greater 

unordered or greater

ir_relation_unordered_greater_equal 

unordered, greater or equal

ir_relation_unordered_less_greater 

unordered, less or greater ('not equal' for floatingpoint numbers)

ir_relation_true 

always true

Definition at line 185 of file firm_types.h.

pinned states.

Enumerator:
op_pin_state_floats 

Nodes of this opcode can be placed in any basic block.

op_pin_state_pinned 

Nodes must remain in this basic block.

op_pin_state_exc_pinned 

Node must be remain in this basic block if it can throw an exception, else can float.

Used internally.

op_pin_state_mem_pinned 

Node must be remain in this basic block if it can throw an exception or uses memory, else can float.

Used internally.

Definition at line 224 of file firm_types.h.

Function Documentation

void add_irn_dep ( ir_node node,
ir_node dep 
)

Add an artificial dependency to the node.

Parameters
nodeThe node.
depThe dependency target.
void add_irn_deps ( ir_node tgt,
ir_node src 
)

Copy all dependencies from a node to another.

This is only allowed in phase_backend!

Parameters
tgtThe node which should be enriched.
srcThe node whose dependencies shall be copied.
int add_irn_n ( ir_node node,
ir_node in 
)

Appends a new predecessor to a node.

This only works for nodes with variable arity!

Returns
the number of the new input
void copy_node_attr ( ir_graph irg,
const ir_node old_node,
ir_node new_node 
)

Copies attributes stored in the old node to a new node.

Assumes both have the same opcode and sufficient size.

Parameters
irgThe irg of the new_node (get_irn_irg on it might not work yet)
old_nodethe node where the attributes are copied from
new_nodenode the attributes get copies to.

This copies all essential information to the new node. It does not copy temporal or calculated information like visited flags or results of dominance or loop calculations

void delete_irn_dep ( ir_node node,
ir_node dep 
)

Deletes the entry of the dependency array, that points to dep.

Does nothing if no dependency exists.

Parameters
nodethe node to delete the dependency at
depthe target of the dependency to delete
const char* gdb_node_helper ( void *  firm_object)

Returns a descriptive name of a node (containing type+number)

ir_node* get_binop_left ( const ir_node node)

Returns left operand of binary operation node.

ir_node* get_binop_right ( const ir_node node)

Returns rights operand of binary operation node.

const char* get_builtin_kind_name ( ir_builtin_kind  kind)

Returns a human readable string for the ir_builtin_kind.

const char* get_cond_jmp_predicate_name ( cond_jmp_predicate  pred)

Returns the string representation of the jump prediction.

ir_relation get_inversed_relation ( ir_relation  relation)

Calculates the inversed (R^-1) relation, i.e., "<" –> ">".

int get_irn_arity ( const ir_node node)

Returns the number of predecessors without the block predecessor.

Parameters
nodethe IR-node
dbg_info* get_irn_dbg_info ( const ir_node n)

Returns the debug information of an node.

Parameters
nThe node.
ir_node* get_irn_dep ( const ir_node node,
int  pos 
)

Returns an entry of the dependency array.

Parameters
nodeThe node.
posThe position.
Returns
The node at that position.
int get_irn_deps ( const ir_node node)

Returns the length of the dependency array.

Parameters
nodeThe node.
Returns
The length of the dependency array or 0 if it has not yet been allocated.
ir_entity* get_irn_entity_attr ( ir_node n)

Returns the entity attribute of a node n (SymConst, Sel) or NULL.

void* get_irn_generic_attr ( ir_node node)

Returns a pointer to the node attributes.

Used for accessing attributes of user-defined nodes.

const void* get_irn_generic_attr_const ( const ir_node node)

Returns a pointer to the node attributes.

Used for accessing attributes of user-defined nodes.

unsigned get_irn_idx ( const ir_node node)

Returns the unique node index for the node in its graph.

This index is used to access phase information for this node.

See Also
get_idx_irn()
ir_graph* get_irn_irg ( const ir_node node)

Returns the ir_graph this node belongs to.

void* get_irn_link ( const ir_node node)

Returns the link of a node.

ir_mode* get_irn_mode ( const ir_node node)

Returns the mode struct of a node.

ir_node* get_irn_n ( const ir_node node,
int  n 
)

Returns the n-th predecessor of a node.

This function removes Id predecessors.

long get_irn_node_nr ( const ir_node node)

Outputs a unique number for this node if libFIRM is compiled for debugging, (configure with –enable-debug) else returns address of node cast to long.

ir_op* get_irn_op ( const ir_node node)

Returns the opcode struct of the node.

unsigned get_irn_opcode ( const ir_node node)

Returns the opcode-enum of the node.

ident* get_irn_opident ( const ir_node node)

Returns the ident for a string representation of the opcode.

const char* get_irn_opname ( const ir_node node)

Returns the string representation of the opcode.

op_pin_state get_irn_pinned ( const ir_node node)

Returns the pinned state of a node.

Returns whether the node always must be pinned. I.e., the node is not floating after global cse.

Returns
Either state op_pin_state_pinned or op_pin_state_floats.
ir_type* get_irn_type_attr ( ir_node n)

Returns the type attribute of a node n (SymConst, Call, Alloc, Free, Cast) or NULL.

ir_visited_t get_irn_visited ( const ir_node node)

Returns the visited counter of a node.

ir_node* get_memop_mem ( const ir_node node)

Returns the memory input of a memory operation.

ir_relation get_negated_relation ( ir_relation  relation)

Calculates the negated (Complement(R)) relation, i.e.

"<" –> ">="

const char* get_relation_string ( ir_relation  relation)

Returns the name of an ir_relation.

ir_node* get_unop_op ( const ir_node node)

Returns (arithmetic) operand of unary operation node.

void ir_set_throws_exception ( ir_node node,
int  throws_exception 
)

Sets throws exception attribute of a fragile node throws_exception must be 0 or 1.

int ir_throws_exception ( const ir_node node)

Returns throws_exception attribute of a fragile node.

int irn_visited ( const ir_node node)

Returns 1 if visited >= get_irg_visited(current_ir_graph).

int irn_visited_else_mark ( ir_node node)

Returns 1 if visited >= get_irg_visited(current_ir_graph).

Marks the node visited, if it was not.

int is_arg_Proj ( const ir_node node)

Returns non-zero if a node is a routine parameter.

Parameters
nodethe Proj node to test
int is_binop ( const ir_node node)

Tests whether node is a binary operation (opcode arity is oparity_binary)

Returns
1 if node is an binary operation, 0 otherwise
int is_cfop ( const ir_node node)

Returns true if the operation manipulates control flow.

int is_fragile_op ( const ir_node node)

Returns true if the operation can change the control flow because of an exception: Call, Div, Mod, Load, Store, Alloc, Bad.

Raise is not fragile, but a unconditional jump.

ir_type* is_frame_pointer ( const ir_node n)

Tests whether arbitrary node is frame pointer.

Tests whether arbitrary node is frame pointer, i.e. Proj(pn_Start_P_frame_base) from Start. If so returns frame type, else Null.

int is_ir_node ( const void *  thing)

Checks whether a pointer points to a ir node.

This is guessed by looking at the few bytes of the thing. Most things used in firm have a firm_kind attribute there. This function might falsely return true though for things without a firm_kind at the beginning.

Parameters
thingan arbitrary pointer
Returns
non-zero if the thing is a ir mode, else zero
int is_irn_constlike ( const ir_node node)

Returns non-zero for constant-like nodes.

int is_irn_cse_neutral ( const ir_node node)

Returns non-zero for nodes that are CSE neutral to its users.

int is_irn_forking ( const ir_node node)

Returns true if the operation is a forking control flow operation: Cond.

int is_irn_keep ( const ir_node node)

Returns non-zero for nodes that are allowed to have keep-alives and are neither Block nor PhiM.

op_pin_state is_irn_pinned_in_irg ( const ir_node node)

Returns whether the node is currently pinned.

If get_irn_pinned returns op_pin_state_floats and the graph the node belongs to is in state op_poin_state_floats then this function returns 'floats', else 'pinned'.

int is_irn_start_block_placed ( const ir_node node)

Returns non-zero for nodes that are always placed in the start block.

int is_memop ( const ir_node node)

Returns true if node is a memory operation.

A memory operation is a node with an opcode that has irop_flag_uses_memory set. It is guaranteed to have (exactly) one memory input.

int is_unknown_jump ( const ir_node node)

Returns true if the operation jumps to an unknown destination.

See irop_flag_unknown_jump for a detailed explanation

int is_unop ( const ir_node node)

Tests whether node is an unary operation (opcode arity is oparity_unary)

Returns
1 if node is an unary operation, 0 otherwise
int is_x_except_Proj ( const ir_node node)

Tests whether a node is the X_except Proj of a fragile operation.

int is_x_regular_Proj ( const ir_node node)

Tests whether a node is the X_regular Proj of a fragile operation.

void mark_irn_visited ( ir_node node)

Sets visited to get_irg_visited(current_ir_graph).

ir_node* new_ir_node ( dbg_info db,
ir_graph irg,
ir_node block,
ir_op op,
ir_mode mode,
int  arity,
ir_node *const *  in 
)

IR node constructor.

Create a new IR node in irg, with an op, mode, arity and some incoming IR nodes. This constructor is used in every specific IR node constructor.

Parameters
dbDebug info.
irgIR-graph on with this new node should be constructed.
blockThe block the new node belongs to
opThe opcode of the new node.
modeThe mode of the new node.
arityThe arity of the new node, <0 if can be changed dynamically.
inAn array of arity predecessor nodes.
void set_binop_left ( ir_node node,
ir_node left 
)

Sets left operand of binary operation node.

void set_binop_right ( ir_node node,
ir_node right 
)

Sets right operand of binary operation node.

void set_irn_dbg_info ( ir_node n,
dbg_info db 
)

Sets the debug information of a node.

Parameters
nThe node.
dbThe debug info.
void set_irn_dep ( ir_node node,
int  pos,
ir_node dep 
)

Sets an entry of the dependency array.

Parameters
nodeThe node.
posThe position.
depThe dependency target.
void set_irn_in ( ir_node node,
int  arity,
ir_node in[] 
)

Replaces the old in array by a new one that will contain the ins given in the parameters.

Conserves the block predecessor. It copies the array passed. This function is necessary to adjust in arrays of blocks, calls and phis. Assumes that current_ir_graph is set to the graph containing "node". "in" must contain all predecessors except the block that are required for the nodes opcode.

void set_irn_link ( ir_node node,
void *  link 
)

Sets the link of a node.

Only allowed if the graph is NOT in phase_building.

void set_irn_mode ( ir_node node,
ir_mode mode 
)

Sets the mode struct of node.

void set_irn_n ( ir_node node,
int  n,
ir_node in 
)

Replaces the n-th predecessor of a node with a new one.

void set_irn_op ( ir_node node,
ir_op op 
)

Sets the opcode struct of the node.

void set_irn_pinned ( ir_node node,
op_pin_state  state 
)

Sets pin state for nodes with op pin state op_pin_state_exc_pinned.

void set_irn_visited ( ir_node node,
ir_visited_t  visited 
)

Sets the visited counter of a node.

void set_memop_mem ( ir_node node,
ir_node mem 
)

Sets the memory input of a memory operation.

void set_unop_op ( ir_node node,
ir_node op 
)

Sets (arithmetic) operand of unary operation node.

ir_node* skip_Cast ( ir_node node)

Returns operand of node if node is a Cast.

const ir_node* skip_Cast_const ( const ir_node node)

Returns operand of node if node is a Cast.

ir_node* skip_Confirm ( ir_node node)

Returns operand of node if node is a Confirm.

ir_node* skip_HighLevel_ops ( ir_node node)

Skip all high-level Operations (including Cast, Confirm).

ir_node* skip_Id ( ir_node node)

Returns operand of node if node is a Id.

ir_node* skip_Pin ( ir_node node)

Returns operand of node if node is a Pin.

ir_node* skip_Proj ( ir_node node)

Returns operand of node if node is a Proj.

const ir_node* skip_Proj_const ( const ir_node node)

Returns operand of node if node is a Proj.

ir_node* skip_Tuple ( ir_node node)

Returns corresponding operand of Tuple if node is a Proj from a Tuple.