- no more be_init(): backend is initialised in init_firm
[libfirm] / include / libfirm / irnode.h
index 6349de0..34fc7d6 100644 (file)
@@ -310,9 +310,6 @@ typedef enum {
        pn_Start_X_initial_exec,   /**< Projection on the initial control flow. */
        pn_Start_M,                /**< Projection on the initial memory. */
        pn_Start_P_frame_base,     /**< Projection on the frame base pointer. */
-       pn_Start_P_globals,        /**< Projection on the pointer to the data segment
-                                       containing _all_ global entities.  Use for
-                                       position independent data/code access. */
        pn_Start_P_tls,            /**< Projection on the pointer to the thread local store
                                        segment containing _all_thread local variables. */
        pn_Start_T_args,           /**< Projection on all arguments. */
@@ -327,12 +324,6 @@ typedef enum {
  * from Start.  If so returns frame type, else Null. */
 ir_type *is_frame_pointer(const ir_node *n);
 
-/** Test whether arbitrary node is globals pointer.
- *
- * Test whether arbitrary node is globals pointer, i.e. Proj(pn_Start_P_globals)
- * from Start.  If so returns global type, else Null. */
-ir_type *is_globals_pointer(const ir_node *n);
-
 /** Test whether arbitrary node is the thread local storage (tls) pointer.
  *
  * Test whether arbitrary node is tls pointer, i.e. Proj(pn_Start_P_tls)
@@ -421,6 +412,12 @@ void set_Block_label(ir_node *block, ir_label_t label);
 ir_node *get_Block_phis(const ir_node *block);
 /** Sets the head of the Phi list for this block. */
 void set_Block_phis(ir_node *block, ir_node *phi);
+/** Add a Phi node to the list of Block Phi's. */
+void add_Block_phi(ir_node *block, ir_node *phi);
+/** Get the Block mark (single bit). */
+unsigned get_Block_mark(const ir_node *block);
+/** Set the Block mark (single bit). */
+void set_Block_mark(ir_node *block, unsigned mark);
 
 /** Return the number of Keep alive node. */
 int  get_End_n_keepalives(const ir_node *end);
@@ -921,14 +918,14 @@ int is_Cast_upcast(ir_node *node);
 int is_Cast_downcast(ir_node *node);
 
 
-/** Returns true if n is Phi or Filter in interprocedural_view.
-   Returns false if irg in phase building and the Phi has zero
+/** Returns true if n is a Phi or a Filter node in INTER-procedural view.
+   Returns false if irg is in phase phase_building and the Phi has zero
    predecessors: it's a Phi0. */
 int       is_Phi(const ir_node *n);
-/** Returns true if irg in phase building and the Phi has zero
+/** Returns true if irg in phase phase_building and the Phi has zero
    predecessors. It's a Phi0 then. */
 int       is_Phi0(const ir_node *n);
-/* These routines also work for Filter nodes in interprocedural view. */
+/* These routines also work for Filter nodes in INTER-procedural view. */
 ir_node **get_Phi_preds_arr(ir_node *node);
 int       get_Phi_n_preds(const ir_node *node);
 ir_node  *get_Phi_pred(const ir_node *node, int pos);
@@ -984,10 +981,10 @@ void           set_Load_align(ir_node *node, ir_align align);
  * Projection numbers for Store: use for Proj nodes!
  */
 typedef enum {
-  pn_Store_M         = pn_Generic_M_regular, /**< Memory result. */
-  pn_Store_X_regular = pn_Generic_X_regular, /**< Execution result if no exception occurred. */
-  pn_Store_X_except  = pn_Generic_X_except,  /**< Execution result if exception occurred. */
-  pn_Store_max       = pn_Generic_other      /**< number of projections from a Store */
+       pn_Store_M         = pn_Generic_M_regular, /**< Memory result. */
+       pn_Store_X_regular = pn_Generic_X_regular, /**< Execution result if no exception occurred. */
+       pn_Store_X_except  = pn_Generic_X_except,  /**< Execution result if exception occurred. */
+       pn_Store_max       = pn_Generic_other      /**< number of projections from a Store */
 } pn_Store;  /* Projection numbers for Store. */
 
 ir_node       *get_Store_mem(const ir_node *node);
@@ -1021,8 +1018,8 @@ void     set_Alloc_type(ir_node *node, ir_type *tp);
 
 /** The allocation place. */
 typedef enum {
-  stack_alloc,          /**< Alloc allocates the object on the stack. */
-  heap_alloc            /**< Alloc allocates the object on the heap. */
+       stack_alloc,          /**< Alloc allocates the object on the stack. */
+       heap_alloc            /**< Alloc allocates the object on the heap. */
 } ir_where_alloc;
 
 ir_where_alloc get_Alloc_where(const ir_node *node);
@@ -1131,7 +1128,7 @@ typedef enum {
 } pn_InstOf;
 #define pn_InstOf_M pn_InstOf_M_regular
 
-/** InstOf access */
+/** InstOf access. */
 ir_type *get_InstOf_type(ir_node *node);
 void    set_InstOf_type(ir_node *node, ir_type *type);
 ir_node *get_InstOf_store(const ir_node *node);
@@ -1275,6 +1272,8 @@ int      is_Shrs(const ir_node *node);
 int      is_Rot(const ir_node *node);
 /** Returns true if node is a Psi node. */
 int      is_Psi(const ir_node *node);
+/** Returns true if node is an Id node. */
+int      is_Id(const ir_node *node);
 /** Returns true if node is a Tuple node. */
 int      is_Tuple(const ir_node *node);
 /** Returns true if node is a Bound node. */
@@ -1289,6 +1288,8 @@ int      is_Unknown(const ir_node *node);
 int      is_Return(const ir_node *node);
 /** Returns true if node is a Call node. */
 int      is_Call(const ir_node *node);
+/** Returns true if node is a CallBegin node. */
+int      is_CallBegin(const ir_node *node);
 /** Returns true if node is a Sel node. */
 int      is_Sel(const ir_node *node);
 /** Returns true if node is a Mul node. */
@@ -1313,21 +1314,27 @@ int      is_SymConst(const ir_node *node);
 int      is_SymConst_addr_ent(const ir_node *node);
 /** Returns true if node is a Cond node. */
 int      is_Cond(const ir_node *node);
-/** Returns true of node is a CopyB node */
+/** Returns true of node is a CopyB node. */
 int      is_CopyB(const ir_node *node);
 /** Returns true if node is a Cmp node. */
 int      is_Cmp(const ir_node *node);
-/** Returns true if node is an Alloc node */
+/** Returns true if node is an Alloc node. */
 int      is_Alloc(const ir_node *node);
-/** Returns true if a node is a Jmp node */
+/** Returns true if node is a Free node. */
+int      is_Free(const ir_node *node);
+/** Returns true if a node is a Jmp node. */
 int      is_Jmp(const ir_node *node);
-/** Returns true if a node is a Raise node */
+/** Returns true if a node is a IJmp node. */
+int      is_IJmp(const ir_node *node);
+/** Returns true if a node is a Raise node. */
 int      is_Raise(const ir_node *node);
-/** Returns true if a node is an ASM node */
+/** Returns true if a node is an ASM node. */
 int      is_ASM(const ir_node *node);
-/** Returns true if node is a Proj node or a Filter node in
- * intraprocedural view */
+/** Returns true if node is a Proj node or a Filter node in INTRA-procedural view. */
 int      is_Proj(const ir_node *node);
+/** Returns true if node is a Filter node. */
+int      is_Filter(const ir_node *node);
+
 /** Returns true if the operation manipulates control flow:
    Start, End, Jmp, Cond, Return, Raise, Bad, CallBegin, EndReg, EndExcept */
 int is_cfop(const ir_node *node);
@@ -1417,7 +1424,7 @@ void set_Cond_jmp_pred(ir_node *cond, cond_jmp_predicate pred);
 int is_Global(const ir_node *node);
 
 /* Returns the entity of a global address. */
-ir_entity *get_Global_ent(const ir_node *node);
+ir_entity *get_Global_entity(const ir_node *node);
 
 /**
  * Access custom node data.