replaced all recursive computed_value calls ba value_of()
[libfirm] / ir / ir / irnode.h
index d2a3e66..4803fcc 100644 (file)
@@ -87,8 +87,7 @@ typedef struct ir_node ir_node;
 #endif
 
 #ifdef __cplusplus
-       extern "C" {
-
+extern "C" {
 #endif
 
 /**
@@ -187,6 +186,11 @@ ir_graph     *get_irn_irg      (ir_node *node);
    of node cast to long. */
 long          get_irn_node_nr  (const ir_node *node);
 
+/** Returns the pinned state of a node. */
+op_pin_state get_irn_pinned    (const ir_node *node);
+
+/** Set pin state for nodes with op pin state op_pin_state_exc_pinned */
+void set_irn_pinned(ir_node *node, op_pin_state state);
 
 /**
  * irnode constructor.
@@ -218,12 +222,14 @@ new_ir_node (dbg_info *db,
  *
  */
 
-/** 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
+/** Return the block the node belongs to.
+ *
+ * This works for all except Block.  It can return Blocks or the Bad node.
+ *
+ * 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. */
 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);
 
 /**
@@ -427,6 +433,12 @@ union symconst_symbol get_SymConst_symbol (ir_node *node);
 void                  set_SymConst_symbol (ir_node *node,
                                           union symconst_symbol sym);
 
+/** Access the type of the value represented by the SymConst.
+ *
+ *  Example: primitive type int for SymConst size. */
+type *get_SymConst_value_type (ir_node *node);
+void  set_SymConst_value_type (ir_node *node, type *tp);
+
 ir_node *get_Sel_mem (ir_node *node);
 void     set_Sel_mem (ir_node *node, ir_node *mem);
 ir_node *get_Sel_ptr (ir_node *node);  /* ptr to the object to select from */
@@ -470,16 +482,29 @@ void     set_Call_type (ir_node *node, type *tp);
 /** 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);
@@ -502,10 +527,21 @@ void     set_FuncCall_type (ir_node *node, type *tp);
 /** 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);
@@ -729,7 +765,7 @@ ir_node *get_Filter_cg_pred(ir_node *node, int pos);
 
 /** Return true if parameter is a memory operation.
  *
- *  A memory operation is an operation that directly changes the
+ *  A memory operation is an operation that changes the
  *  memory.  I.e., a Load or a Store operation.
  */
 int is_memop(ir_node *node);
@@ -880,6 +916,10 @@ int is_fragile_op(ir_node *node);
 /** 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                                                   **/
 /*-----------------------------------------------------------------*/