/** This works for all except Block. To express the difference to
* access routines that work for all nodes we use infix "nodes" and do not
* name this function get_irn_block. */
-#define get_nodes_block get_nodes_Block
ir_node *get_nodes_block (ir_node *node);
-#define set_nodes_block set_nodes_Block
void set_nodes_block (ir_node *node, ir_node *block);
/**
/** Gets the arity of a call. Identical to get_Call_n_params(). */
int get_Call_arity (ir_node *node);
-/* Set, get and remove the callee-analysis.
- The array is only accessible if information is valid.
- It contains NULL for called methods that are not within
- the compilation unit. */
+/** Set, get and remove the callee information for a Call node.
+ *
+ * The callee information lists all method entities that can be called
+ * from this node. If the address expression can not be analyzed fully,
+ * e.g., as there are external methods that could be called, the array
+ * contains a single NULL entry.
+ *
+ * The array is only accessible if callee information is valid. See flag
+ * in graph.
+ *
+ * The memory allocated for the array is managed automatically, i.e., it must
+ * not be freed if the Call node is removed from the graph.
+ *
+ * @param node A Call node.
+ */
int Call_has_callees (ir_node *node);
-int get_Call_n_callees (ir_node * node);
-entity *get_Call_callee (ir_node * node, int pos);
-/* assumes current_ir_graph set properly! */
-void set_Call_callee_arr (ir_node * node, int n, entity ** arr);
-void remove_Call_callee_arr(ir_node * node);
+int get_Call_n_callees (ir_node *node);
+entity *get_Call_callee (ir_node *node, int pos);
+/** Set the full callee array.
+ *
+ * The passed array is copied. Assumes current_ir_graph set properly! */
+void set_Call_callee_arr (ir_node *node, const int n, entity **arr);
+void remove_Call_callee_arr(ir_node *node);
ir_node *get_CallBegin_ptr (ir_node *node);
void set_CallBegin_ptr (ir_node *node, ir_node *ptr);
/** Gets the arity of a func call. Identical to get_FuncCall_n_params(). */
int get_FuncCall_arity (ir_node *node);
-/* Set, get and remove the callee-analysis.
- The array is only accessible if information is valid.
- It contains NULL for called methods that are not within
- the compilation unit. */
+/** Set, get and remove the callee information for a Call node.
+ *
+ * The callee information lists all method entities that can be called
+ * from this node. If the address expression can not be analyzed fully,
+ * e.g., as there are external methods that could be called, the array
+ * contains a single NULL entry.
+ *
+ * The array is only accessible if callee information is valid. See flag
+ * in graph.
+ *
+ * The memory allocated for the array is managed automatically, i.e., it must
+ * not be freed if the Call node is removed from the graph.
+ *
+ * @param node A FuncCall node.
+ */
int FuncCall_has_callees (ir_node *node);
int get_FuncCall_n_callees (ir_node * node);
entity *get_FuncCall_callee (ir_node * node, int pos);
void set_Load_mem (ir_node *node, ir_node *mem);
ir_node *get_Load_ptr (ir_node *node);
void set_Load_ptr (ir_node *node, ir_node *ptr);
-ent_volatility get_Load_volatility (ir_node *node);
-void set_Load_volatility (ir_node *node, ent_volatility volatility);
ir_mode *get_Load_mode (ir_node *node);
void set_Load_mode (ir_node *node, ir_mode *mode);
+ent_volatility get_Load_volatility (ir_node *node);
+void set_Load_volatility (ir_node *node, ent_volatility volatility);
/**
* Projection numbers for Store: use for Proj nodes!
/** Returns the memory operand of fragile operations. */
ir_node *get_fragile_op_mem(ir_node *node);
+/** Returns true if the operation is a forking control flow
+ * operation: Cond. */
+int is_forking_op(ir_node *node);
+
/*-----------------------------------------------------------------*/
/** Debug aides **/
/*-----------------------------------------------------------------*/