character modes do not have modulo shift's
[libfirm] / ir / ir / ircons.h
index 38ae196..735211e 100644 (file)
  *    ir_node *new_simpleSel (ir_node *store, ir_node *objptr, entity *ent);
  *    ir_node *new_Sel    (ir_node *store, ir_node *objptr, int arity,
  *                         ir_node **in, entity *ent);
- *    ir_node *new_InstOf (ir_node *store, ir_node obj, type *ent);
+ *    ir_node *new_InstOf (ir_node *store, ir_node obj, ir_type *ent);
  *    ir_node *new_Call   (ir_node *store, ir_node *callee, int arity,
  *                 ir_node **in, type_method *type);
  *    ir_node *new_Add    (ir_node *op1, ir_node *op2, ir_mode *mode);
  *    ir_node *new_Rot    (ir_node *op,  ir_node *k,   ir_mode *mode);
  *    ir_node *new_Cmp    (ir_node *op1, ir_node *op2);
  *    ir_node *new_Conv   (ir_node *op, ir_mode *mode);
- *    ir_node *new_Cast   (ir_node *op, type *to_tp);
+ *    ir_node *new_Cast   (ir_node *op, ir_type *to_tp);
  *    ir_node *new_Load   (ir_node *store, ir_node *addr, ir_mode *mode);
  *    ir_node *new_Store  (ir_node *store, ir_node *addr, ir_node *val);
- *    ir_node *new_Alloc  (ir_node *store, ir_node *size, type *alloc_type,
+ *    ir_node *new_Alloc  (ir_node *store, ir_node *size, ir_type *alloc_type,
  *                         where_alloc where);
  *    ir_node *new_Free   (ir_node *store, ir_node *ptr, ir_node *size,
- *               type *free_type, where_alloc where);
+ *               ir_type *free_type, where_alloc where);
  *    ir_node *new_Proj   (ir_node *arg, ir_mode *mode, long proj);
  *    ir_node *new_NoMem  (void);
  *    ir_node *new_Mux    (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode);
- *    ir_node *new_CopyB  (ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+ *    ir_node *new_CopyB  (ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type);
  *    ir_node *new_Bound  (ir_node *store, ir_node *idx, ir_node *lower, ir_node *upper);
  *
  *    void add_immBlock_pred (ir_node *block, ir_node *jmp);
  *      A tuple of the changed memory and a control flow to be taken in
  *      case of an exception.
  *
- *    ir_node *new_Alloc (ir_node *store, ir_node *size, type *alloc_type,
- *    --------------------------------------------------------------------
+ *    ir_node *new_Alloc (ir_node *store, ir_node *size, ir_type *alloc_type,
+ *    -----------------------------------------------------------------------
  *                        where_alloc where)
  *                        ------------------
  *
  *      a.*type          A pointer to the class the allocated data object
  *                       belongs to.
  *
- *    ir_node *new_Free (ir_node *store, ir_node *ptr, ir_node *size, type *free_type,
- *    --------------------------------------------------------------------------------
+ *    ir_node *new_Free (ir_node *store, ir_node *ptr, ir_node *size, ir_type *free_type,
+ *    -----------------------------------------------------------------------------------
  *                        where_alloc where)
  *                        ------------------
  *
  *    This node is used as input for operations that need a Memory, but do not
  *    change it like Div by const != 0, analyzed calls etc.
  *
- *    ir_node *new_CopyB (ir_node *store, ir_node *dst, ir_node *src, type *data_type)
+ *    ir_node *new_CopyB (ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type)
  *    -----------------------------------------------------------------------------------
  *
  *    Describes a high level block copy of a compound type form address src to
  *    Describes a high level bounds check. Must be lowered to a Call to a runtime check
  *    function.
  *
+ *    ir_node *new_InstOf(ir_node *store, ir_node *ptr, ir_type *type);
+ *    -----------------------------------------------------------------------------------
+ *
+ *    Describes a high level type check. Must be lowered to a Call to a runtime check
+ *    function.
+ *
  *    ir_node *new_Proj (ir_node *arg, ir_mode *mode, long proj)
  *    ----------------------------------------------------------
  *
  *   node.
  *
  */
+#ifndef _IRCONS_H_
+#define _IRCONS_H_
 
-
-# ifndef _IRCONS_H_
-# define _IRCONS_H_
-
-# include "firm_common.h"
-# include "irgraph.h"
-# include "irnode.h"
-# include "irmode.h"
-# include "entity.h"
-# include "tv.h"
-# include "type.h"
-# include "dbginfo.h"
+#include "firm_common.h"
+#include "irnode.h"
+#include "dbginfo.h"
 
 /*-------------------------------------------------------------------------*/
 /* The raw interface                                                       */
@@ -1189,8 +1188,8 @@ ir_node *new_rd_Raise  (dbg_info *db, ir_graph *irg, ir_node *block,
  * @param *con   Points to an entry in the constant table.
  * @param *tp    The type of the constant.
  */
-ir_node *new_rd_Const_type (dbg_infodb, ir_graph *irg, ir_node *block,
-                ir_mode *mode, tarval *con, type *tp);
+ir_node *new_rd_Const_type (dbg_info *db, ir_graph *irg, ir_node *block,
+                ir_mode *mode, tarval *con, ir_type *tp);
 
 /** Constructor for a Const node.
  *
@@ -1238,8 +1237,8 @@ ir_node *new_rd_Const  (dbg_info *db, ir_graph *irg, ir_node *block,
  * @param value   A type, entity or a ident depending on the SymConst kind.
  * @param tp      The source type of the constant.
  */
-ir_node *new_rd_SymConst_type (dbg_infodb, ir_graph *irg, ir_node *block, union symconst_symbol value,
-                              symconst_kind symkind, type *tp);
+ir_node *new_rd_SymConst_type (dbg_info *db, ir_graph *irg, ir_node *block, union symconst_symbol value,
+                              symconst_kind symkind, ir_type *tp);
 
 /** Constructor for a SymConst node.
  *
@@ -1252,28 +1251,28 @@ ir_node *new_rd_SymConst (dbg_info *db, ir_graph *irg, ir_node *block,
  * Same as new_rd_SymConst_type, except that the constructor is tailored for
  * symconst_addr_ent.
  * Adds the SymConst to the start block of irg. */
-ir_node *new_rd_SymConst_addr_ent (dbg_info *db, ir_graph *irg, entity *symbol, type *tp);
+ir_node *new_rd_SymConst_addr_ent (dbg_info *db, ir_graph *irg, entity *symbol, ir_type *tp);
 
 /** Constructor for a SymConst addr_name node.
  *
  * Same as new_rd_SymConst_type, except that the constructor is tailored for
  * symconst_addr_ent.
  * Adds the SymConst to the start block of irg. */
-ir_node *new_rd_SymConst_addr_name (dbg_info *db, ir_graph *irg, ident *symbol, type *tp);
+ir_node *new_rd_SymConst_addr_name (dbg_info *db, ir_graph *irg, ident *symbol, ir_type *tp);
 
 /** Constructor for a SymConst type_tag node.
  *
  * Same as new_rd_SymConst_type, except that the constructor is tailored for
  * symconst_addr_ent.
  * Adds the SymConst to the start block of irg. */
-ir_node *new_rd_SymConst_type_tag (dbg_info *db, ir_graph *irg, type *symbol, type *tp);
+ir_node *new_rd_SymConst_type_tag (dbg_info *db, ir_graph *irg, ir_type *symbol, ir_type *tp);
 
 /** Constructor for a SymConst size node.
  *
  * Same as new_rd_SymConst_type, except that the constructor is tailored for
  * symconst_addr_ent.
  * Adds the SymConst to the start block of irg. */
-ir_node *new_rd_SymConst_size (dbg_info *db, ir_graph *irg, type *symbol, type *tp);
+ir_node *new_rd_SymConst_size (dbg_info *db, ir_graph *irg, ir_type *symbol, ir_type *tp);
 
 /** Constructor for a simpleSel node.
  *
@@ -1318,17 +1317,18 @@ ir_node *new_rd_Sel    (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *st
 
 /** Constructor for a InstOf node.
  *
- * For translating Java.  Not supported as standard firm node.
+ * A High-Level Type check.
  *
- * @param   *db     A pointer for debug information.
- * @param   *irg    The ir graph the node  belongs to.
- * @param   *block  The ir block the node belongs to.
- * @param   *store
- * @param   *objptr
- * @param   *ent
+ * @param   *db        A pointer for debug information.
+ * @param   *irg       The ir graph the node  belongs to.
+ * @param   *block     The ir block the node belongs to.
+ * @param   *store     The memory in which the object the entity should be selected
+ *                     from is allocated.
+ * @param   *objptr    A pointer to a object of a class type.
+ * @param   *type      The type of which objptr must be.
  */
 ir_node *new_rd_InstOf (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
-                       ir_node *objptr, type *ent);
+                       ir_node *objptr, ir_type *type);
 
 /** Constructor for a Call node.
  *
@@ -1344,7 +1344,7 @@ ir_node *new_rd_InstOf (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *st
  * @param   *tp     Type information of the procedure called.
  */
 ir_node *new_rd_Call   (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
-                       ir_node *callee, int arity, ir_node *in[], type *tp);
+                       ir_node *callee, int arity, ir_node *in[], ir_type *tp);
 
 /** Constructor for a Add node.
  *
@@ -1580,8 +1580,8 @@ ir_node *new_rd_Conv   (dbg_info *db, ir_graph *irg, ir_node *block,
  * @param   *op    The operand.
  * @param   *to_tp The type of this the operand muss be casted .
  */
-ir_node *new_rd_Cast   (dbg_infodb, ir_graph *irg, ir_node *block,
-                       ir_node *op, type *to_tp);
+ir_node *new_rd_Cast   (dbg_info *db, ir_graph *irg, ir_node *block,
+                       ir_node *op, ir_type *to_tp);
 
 /** Constructor for a Phi node.
  *
@@ -1632,7 +1632,7 @@ ir_node *new_rd_Store  (dbg_info *db, ir_graph *irg, ir_node *block,
  * @param where       Where to allocate the variable, either heap_alloc or stack_alloc.
  */
 ir_node *new_rd_Alloc  (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
-               ir_node *size, type *alloc_type, where_alloc where);
+               ir_node *size, ir_type *alloc_type, where_alloc where);
 
 /** Constructor for a Free node.
  *
@@ -1649,7 +1649,7 @@ ir_node *new_rd_Alloc  (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *st
  * @param where       Where the variable was allocated, either heap_alloc or stack_alloc.
  */
 ir_node *new_rd_Free   (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
-                       ir_node *ptr, ir_node *size, type *free_type, where_alloc where);
+                       ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where);
 
 /** Constructor for a Sync node.
  *
@@ -1846,7 +1846,7 @@ ir_node *new_rd_Mux  (dbg_info *db, ir_graph *irg, ir_node *block,
  * @param *data_type  The type of the copied data
  */
 ir_node *new_rd_CopyB(dbg_info *db, ir_graph *irg, ir_node *block,
-    ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+    ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type);
 
 /** Constructor for a Bound node.
  * Checks whether lower <= idx && idx < upper.
@@ -1995,7 +1995,7 @@ ir_node *new_r_Const_long(ir_graph *irg, ir_node *block,
  * @param *tp    The type of the constant.
  */
 ir_node *new_r_Const_type(ir_graph *irg, ir_node *block,
-           ir_mode *mode, tarval *con, type *tp);
+           ir_mode *mode, tarval *con, ir_type *tp);
 
 /** Constructor for a SymConst node.
  *
@@ -2051,15 +2051,17 @@ ir_node *new_r_Sel    (ir_graph *irg, ir_node *block, ir_node *store,
 
 /** Constructor for a InstOf node.
  *
- * For translating Java.  Not supported as standard firm node.
+ * A High-Level Type check.
  *
- * @param   *irg   The ir graph the node  belongs to.
- * @param   *block The ir block the node belongs to.
- * @param   *x
- * @param   *y
- * @param   *z
+ * @param   *irg       The ir graph the node  belongs to.
+ * @param   *block     The ir block the node belongs to.
+ * @param   *store     The memory in which the object the entity should be selected
+ *                     from is allocated.
+ * @param   *objptr    A pointer to a object of a class type.
+ * @param   *type      The type of which objptr must be.
  */
-ir_node *new_r_InstOf (ir_graph *irg, ir_node *block, ir_node *x, ir_node *y, type *z);
+ir_node *new_r_InstOf (ir_graph *irg, ir_node *block, ir_node *store,
+                       ir_node *objptr, ir_type *type);
 
 /** Constructor for a Call node.
  *
@@ -2075,7 +2077,7 @@ ir_node *new_r_InstOf (ir_graph *irg, ir_node *block, ir_node *x, ir_node *y, ty
  */
 ir_node *new_r_Call   (ir_graph *irg, ir_node *block, ir_node *store,
                ir_node *callee, int arity, ir_node *in[],
-               type *tp);
+               ir_type *tp);
 
 /** Constructor for a Add node.
  *
@@ -2292,7 +2294,7 @@ ir_node *new_r_Conv   (ir_graph *irg, ir_node *block,
  * @param   *to_tp The type of this the operand muss be casted .
  */
 ir_node *new_r_Cast   (ir_graph *irg, ir_node *block,
-               ir_node *op, type *to_tp);
+               ir_node *op, ir_type *to_tp);
 
 /** Constructor for a Phi node.
  *
@@ -2339,7 +2341,7 @@ ir_node *new_r_Store  (ir_graph *irg, ir_node *block,
  * @param where       Where to allocate the variable, either heap_alloc or stack_alloc.
  */
 ir_node *new_r_Alloc  (ir_graph *irg, ir_node *block, ir_node *store,
-               ir_node *size, type *alloc_type, where_alloc where);
+               ir_node *size, ir_type *alloc_type, where_alloc where);
 
 /** Constructor for a Free node.
  *
@@ -2355,7 +2357,7 @@ ir_node *new_r_Alloc  (ir_graph *irg, ir_node *block, ir_node *store,
  * @param where       Where the variable was allocated, either heap_alloc or stack_alloc.
  */
 ir_node *new_r_Free   (ir_graph *irg, ir_node *block, ir_node *store,
-               ir_node *ptr, ir_node *size, type *free_type, where_alloc where);
+               ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where);
 
 /** Constructor for a  Sync node.
  *
@@ -2555,7 +2557,7 @@ ir_node *new_r_Mux  (ir_graph *irg, ir_node *block,
  * @param *data_type  The type of the copied data
  */
 ir_node *new_r_CopyB(ir_graph *irg, ir_node *block,
-    ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+    ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type);
 
 /** Constructor for a Bound node.
  * Checks whether lower <= idx && idx < upper.
@@ -2601,7 +2603,7 @@ ir_node *get_cur_block(void);
  * @param in[]   An array of control predecessors.  The length of
  *               the array must be 'arity'.
  */
-ir_node *new_d_Block(dbg_infodb, int arity, ir_node *in[]);
+ir_node *new_d_Block(dbg_info *db, int arity, ir_node *in[]);
 
 /** Constructor for a Start node.
  *
@@ -2609,7 +2611,7 @@ ir_node *new_d_Block(dbg_info* db, int arity, ir_node *in[]);
  *
  * @param *db    A pointer for debug information.
  */
-ir_node *new_d_Start  (dbg_infodb);
+ir_node *new_d_Start  (dbg_info *db);
 
 /** Constructor for a End node.
  *
@@ -2617,7 +2619,7 @@ ir_node *new_d_Start  (dbg_info* db);
  *
  * @param *db     A pointer for debug information.
  */
-ir_node *new_d_End    (dbg_infodb);
+ir_node *new_d_End    (dbg_info *db);
 
 /** Constructor for a Jmp node.
  *
@@ -2627,7 +2629,7 @@ ir_node *new_d_End    (dbg_info* db);
  *
  * @param *db     A pointer for debug information.
  */
-ir_node *new_d_Jmp    (dbg_infodb);
+ir_node *new_d_Jmp    (dbg_info *db);
 
 /** Constructor for an IJmp node.
  *
@@ -2654,7 +2656,7 @@ ir_node *new_d_IJmp   (dbg_info *db, ir_node *tgt);
  * @param *c     The conditions parameter.Can be of mode b or I_u.
  */
 
-ir_node *new_d_Cond   (dbg_infodb, ir_node *c);
+ir_node *new_d_Cond   (dbg_info *db, ir_node *c);
 
 /** Constructor for a Return node.
  *
@@ -2669,7 +2671,7 @@ ir_node *new_d_Cond   (dbg_info* db, ir_node *c);
  * @param *in    Array with index inputs to the node.
  */
 
-ir_node *new_d_Return (dbg_infodb, ir_node *store, int arity, ir_node *in[]);
+ir_node *new_d_Return (dbg_info *db, ir_node *store, int arity, ir_node *in[]);
 
 /** Constructor for a Raise node.
  *
@@ -2680,7 +2682,7 @@ ir_node *new_d_Return (dbg_info* db, ir_node *store, int arity, ir_node *in[]);
  * @param *obj   A pointer to the Except variable.
  */
 
-ir_node *new_d_Raise  (dbg_infodb, ir_node *store, ir_node *obj);
+ir_node *new_d_Raise  (dbg_info *db, ir_node *store, ir_node *obj);
 
 /** Constructor for a Const_type node.
  *
@@ -2695,7 +2697,7 @@ ir_node *new_d_Raise  (dbg_info* db, ir_node *store, ir_node *obj);
                  added to the attributes of the node.
  * @param *tp    The type of the constant.
  */
-ir_node *new_d_Const_type (dbg_info* db, ir_mode *mode, tarval *con, type *tp);
+ir_node *new_d_Const_type (dbg_info *db, ir_mode *mode, tarval *con, ir_type *tp);
 
 /** Constructor for a Const node.
  *
@@ -2710,7 +2712,7 @@ ir_node *new_d_Const_type (dbg_info* db, ir_mode *mode, tarval *con, type *tp);
  * @param *con   Points to an entry in the constant table. This pointer is added
  *               to the attributes of the node.
  */
-ir_node *new_d_Const  (dbg_infodb, ir_mode *mode, tarval *con);
+ir_node *new_d_Const  (dbg_info *db, ir_mode *mode, tarval *con);
 
 /** Constructor for a SymConst_type node.
  *
@@ -2740,12 +2742,12 @@ ir_node *new_d_Const  (dbg_info* db, ir_mode *mode, tarval *con);
  *                or symconst_addr_name.
  * @param tp      The source type of the constant.
  */
-ir_node *new_d_SymConst_type (dbg_info* db, union symconst_symbol value, symconst_kind kind, type* tp);
+ir_node *new_d_SymConst_type (dbg_info *db, union symconst_symbol value, symconst_kind kind, ir_type *tp);
 
 /** Constructor for a SymConst node.
  *
  *  Same as new_d_SymConst_type, except that it sets the type to type_unknown. */
-ir_node *new_d_SymConst (dbg_infodb, union symconst_symbol value, symconst_kind kind);
+ir_node *new_d_SymConst (dbg_info *db, union symconst_symbol value, symconst_kind kind);
 
 /** Constructor for a simpleSel node.
  *
@@ -2760,7 +2762,7 @@ ir_node *new_d_SymConst (dbg_info* db, union symconst_symbol value, symconst_kin
  *                     single attribute out.
  * @param   *ent       The entity to select.
  */
-ir_node *new_d_simpleSel(dbg_infodb, ir_node *store, ir_node *objptr, entity *ent);
+ir_node *new_d_simpleSel(dbg_info *db, ir_node *store, ir_node *objptr, entity *ent);
 
 /** Constructor for a Sel node.
  *
@@ -2781,21 +2783,20 @@ ir_node *new_d_simpleSel(dbg_info* db, ir_node *store, ir_node *objptr, entity *
  *                     element entity.  The constructor copies this array.
  * @param   *ent       The entity to select.
  */
-ir_node *new_d_Sel    (dbg_infodb, ir_node *store, ir_node *objptr, int arity, ir_node *in[],
+ir_node *new_d_Sel    (dbg_info *db, ir_node *store, ir_node *objptr, int arity, ir_node *in[],
                      entity *ent);
 
 /** Constructor for a InstOf node.
  *
- * Adds the node to the block in current_ir_block.
- *
- * For translating Java.  Not supported as standard firm node.
+ * A High-Level Type check.
  *
- * @param   *db    A pointer for debug information.
- * @param   *store
- * @param   *objptr
- * @param   *ent
+ * @param   *db        A pointer for debug information.
+ * @param   *store     The memory in which the object the entity should be selected
+ *                     from is allocated.
+ * @param   *objptr    A pointer to a object of a class type.
+ * @param   *type      The type of which objptr must be.
  */
-ir_node *new_d_InstOf (dbg_info* db, ir_node *store, ir_node *objptr, type *ent);
+ir_node *new_d_InstOf (dbg_info *db, ir_node *store, ir_node *objptr, ir_type *type);
 
 /** Constructor for a Call node.
  *
@@ -2810,8 +2811,8 @@ ir_node *new_d_InstOf (dbg_info* db, ir_node *store, ir_node *objptr, type *ent)
  * @param   *tp     Type information of the procedure called.
  */
 
-ir_node *new_d_Call   (dbg_infodb, ir_node *store, ir_node *callee, int arity, ir_node *in[],
-             type *tp);
+ir_node *new_d_Call   (dbg_info *db, ir_node *store, ir_node *callee, int arity, ir_node *in[],
+             ir_type *tp);
 
 /** Constructor for a Add node.
  *
@@ -2822,7 +2823,7 @@ ir_node *new_d_Call   (dbg_info* db, ir_node *store, ir_node *callee, int arity,
  * @param   *op2   The second operand.
  * @param   *mode  The mode of the operands and the result.
  */
-ir_node *new_d_Add    (dbg_infodb, ir_node *op1, ir_node *op2, ir_mode *mode);
+ir_node *new_d_Add    (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
 /** Constructor for a Sub node.
  *
@@ -2834,7 +2835,7 @@ ir_node *new_d_Add    (dbg_info* db, ir_node *op1, ir_node *op2, ir_mode *mode);
  * @param   *mode  The mode of the operands and the result.
  */
 
-ir_node *new_d_Sub    (dbg_infodb, ir_node *op1, ir_node *op2, ir_mode *mode);
+ir_node *new_d_Sub    (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
 /** Constructor for a Minus node.
  *
@@ -2844,7 +2845,7 @@ ir_node *new_d_Sub    (dbg_info* db, ir_node *op1, ir_node *op2, ir_mode *mode);
  * @param   *op    The operand .
  * @param   *mode  The mode of the operand and the result.
  */
-ir_node *new_d_Minus  (dbg_infodb, ir_node *op,  ir_mode *mode);
+ir_node *new_d_Minus  (dbg_info *db, ir_node *op,  ir_mode *mode);
 
 /** Constructor for a Mul node.
  *
@@ -2855,7 +2856,7 @@ ir_node *new_d_Minus  (dbg_info* db, ir_node *op,  ir_mode *mode);
  * @param   *op2   The second operand.
  * @param   *mode  The mode of the operands and the result.
  */
-ir_node *new_d_Mul    (dbg_infodb, ir_node *op1, ir_node *op2, ir_mode *mode);
+ir_node *new_d_Mul    (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
 /** Constructor for a Quot node.
  *
@@ -2866,7 +2867,7 @@ ir_node *new_d_Mul    (dbg_info* db, ir_node *op1, ir_node *op2, ir_mode *mode);
  * @param   *op1   The first operand.
  * @param   *op2   The second operand.
  */
-ir_node *new_d_Quot   (dbg_infodb, ir_node *memop, ir_node *op1, ir_node *op2);
+ir_node *new_d_Quot   (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2);
 
 /** Constructor for a DivMod node.
  *
@@ -2877,7 +2878,7 @@ ir_node *new_d_Quot   (dbg_info* db, ir_node *memop, ir_node *op1, ir_node *op2)
  * @param   *op1   The first operand.
  * @param   *op2   The second operand.
  */
-ir_node *new_d_DivMod (dbg_infodb, ir_node *memop, ir_node *op1, ir_node *op2);
+ir_node *new_d_DivMod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2);
 
 /** Constructor for a Div node.
  *
@@ -2888,7 +2889,7 @@ ir_node *new_d_DivMod (dbg_info* db, ir_node *memop, ir_node *op1, ir_node *op2)
  * @param   *op1   The first operand.
  * @param   *op2   The second operand.
  */
-ir_node *new_d_Div    (dbg_infodb, ir_node *memop, ir_node *op1, ir_node *op2);
+ir_node *new_d_Div    (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2);
 
 /** Constructor for a Mod node.
  *
@@ -2899,7 +2900,7 @@ ir_node *new_d_Div    (dbg_info* db, ir_node *memop, ir_node *op1, ir_node *op2)
  * @param   *op1   The first operand.
  * @param   *op2   The second operand.
  */
-ir_node *new_d_Mod    (dbg_infodb, ir_node *memop, ir_node *op1, ir_node *op2);
+ir_node *new_d_Mod    (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2);
 
 /** Constructor for a Abs node.
  *
@@ -2909,7 +2910,7 @@ ir_node *new_d_Mod    (dbg_info* db, ir_node *memop, ir_node *op1, ir_node *op2)
  * @param   *op    The operand
  * @param   *mode  The mode of the operands and the result.
  */
-ir_node *new_d_Abs    (dbg_infodb, ir_node *op,                ir_mode *mode);
+ir_node *new_d_Abs    (dbg_info *db, ir_node *op,                ir_mode *mode);
 
 /** Constructor for a And node.
  *
@@ -2920,7 +2921,7 @@ ir_node *new_d_Abs    (dbg_info* db, ir_node *op,                ir_mode *mode);
  * @param   *op2   The second operand.
  * @param   *mode  The mode of the operands and the result.
  */
-ir_node *new_d_And    (dbg_infodb, ir_node *op1, ir_node *op2, ir_mode *mode);
+ir_node *new_d_And    (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
 /** Constructor for a Or node.
  *
@@ -2931,7 +2932,7 @@ ir_node *new_d_And    (dbg_info* db, ir_node *op1, ir_node *op2, ir_mode *mode);
  * @param   *op2   The second operand.
  * @param   *mode  The mode of the operands and the result.
  */
-ir_node *new_d_Or     (dbg_infodb, ir_node *op1, ir_node *op2, ir_mode *mode);
+ir_node *new_d_Or     (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
 /** Constructor for a Eor node.
  *
@@ -2942,7 +2943,7 @@ ir_node *new_d_Or     (dbg_info* db, ir_node *op1, ir_node *op2, ir_mode *mode);
  * @param   *op2   The second operand.
  * @param   *mode  The mode of the operands and the results.
  */
-ir_node *new_d_Eor    (dbg_infodb, ir_node *op1, ir_node *op2, ir_mode *mode);
+ir_node *new_d_Eor    (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
 /** Constructor for a Not node.
  *
@@ -2952,7 +2953,7 @@ ir_node *new_d_Eor    (dbg_info* db, ir_node *op1, ir_node *op2, ir_mode *mode);
  * @param   *op    The operand.
  * @param   *mode  The mode of the operand and the result.
  */
-ir_node *new_d_Not    (dbg_infodb, ir_node *op,                ir_mode *mode);
+ir_node *new_d_Not    (dbg_info *db, ir_node *op,                ir_mode *mode);
 
 /** Constructor for a Shl node.
  *
@@ -2963,7 +2964,7 @@ ir_node *new_d_Not    (dbg_info* db, ir_node *op,                ir_mode *mode);
  * @param   *k     The number of bits to  shift the operand .
  * @param   *mode  The mode of the operand and the result.
  */
-ir_node *new_d_Shl    (dbg_infodb, ir_node *op,  ir_node *k,   ir_mode *mode);
+ir_node *new_d_Shl    (dbg_info *db, ir_node *op,  ir_node *k,   ir_mode *mode);
 
 /** Constructor for a Shr node.
  *
@@ -2974,7 +2975,7 @@ ir_node *new_d_Shl    (dbg_info* db, ir_node *op,  ir_node *k,   ir_mode *mode);
  * @param   *k     The number of bits to  shift the operand .
  * @param   *mode  The mode of the operand and the result.
  */
-ir_node *new_d_Shr    (dbg_infodb, ir_node *op,  ir_node *k,   ir_mode *mode);
+ir_node *new_d_Shr    (dbg_info *db, ir_node *op,  ir_node *k,   ir_mode *mode);
 
 /** Constructor for a Shrs node.
  *
@@ -2985,7 +2986,7 @@ ir_node *new_d_Shr    (dbg_info* db, ir_node *op,  ir_node *k,   ir_mode *mode);
  * @param   *k     The number of bits to  shift the operand .
  * @param   *mode  The mode of the operand and the result.
  */
-ir_node *new_d_Shrs   (dbg_infodb, ir_node *op,  ir_node *k,   ir_mode *mode);
+ir_node *new_d_Shrs   (dbg_info *db, ir_node *op,  ir_node *k,   ir_mode *mode);
 
 /** Constructor for a Rot node.
  *
@@ -2996,7 +2997,7 @@ ir_node *new_d_Shrs   (dbg_info* db, ir_node *op,  ir_node *k,   ir_mode *mode);
  * @param   *k     The number of bits to rotate the operand.
  * @param   *mode  The mode of the operand.
  */
-ir_node *new_d_Rot    (dbg_infodb, ir_node *op,  ir_node *k,   ir_mode *mode);
+ir_node *new_d_Rot    (dbg_info *db, ir_node *op,  ir_node *k,   ir_mode *mode);
 
 /** Constructor for a Cmp node.
  *
@@ -3006,7 +3007,7 @@ ir_node *new_d_Rot    (dbg_info* db, ir_node *op,  ir_node *k,   ir_mode *mode);
  * @param   *op1   The first operand.
  * @param   *op2   The second operand.
  */
-ir_node *new_d_Cmp    (dbg_infodb, ir_node *op1, ir_node *op2);
+ir_node *new_d_Cmp    (dbg_info *db, ir_node *op1, ir_node *op2);
 
 /** Constructor for a Conv node.
  *
@@ -3016,7 +3017,7 @@ ir_node *new_d_Cmp    (dbg_info* db, ir_node *op1, ir_node *op2);
  * @param   *op    The operand.
  * @param   *mode  The mode of this the operand muss be converted .
  */
-ir_node *new_d_Conv   (dbg_infodb, ir_node *op, ir_mode *mode);
+ir_node *new_d_Conv   (dbg_info *db, ir_node *op, ir_mode *mode);
 
 /**Constructor for a Cast node.
  *
@@ -3027,7 +3028,7 @@ ir_node *new_d_Conv   (dbg_info* db, ir_node *op, ir_mode *mode);
  * @param   *op    The operand.
  * @param   *to_tp The type of this the operand muss be casted .
  */
-ir_node *new_d_Cast   (dbg_info* db, ir_node *op, type *to_tp);
+ir_node *new_d_Cast   (dbg_info *db, ir_node *op, ir_type *to_tp);
 
 /**Constructor for a Phi node.
  *
@@ -3038,7 +3039,7 @@ ir_node *new_d_Cast   (dbg_info* db, ir_node *op, type *to_tp);
  * @param *in    Array with predecessors
  * @param *mode  The mode of it's inputs and output.
  */
-ir_node *new_d_Phi    (dbg_infodb, int arity, ir_node *in[], ir_mode *mode);
+ir_node *new_d_Phi    (dbg_info *db, int arity, ir_node *in[], ir_mode *mode);
 
 /** Constructor for a Load node.
  *
@@ -3049,7 +3050,7 @@ ir_node *new_d_Phi    (dbg_info* db, int arity, ir_node *in[], ir_mode *mode);
  * @param *addr  A pointer to the variable to be read in this memory.
  * @param *mode  The mode of the value to be loaded.
  */
-ir_node *new_d_Load   (dbg_infodb, ir_node *store, ir_node *addr, ir_mode *mode);
+ir_node *new_d_Load   (dbg_info *db, ir_node *store, ir_node *addr, ir_mode *mode);
 
 /** Constructor for a Store node.
  *
@@ -3060,7 +3061,7 @@ ir_node *new_d_Load   (dbg_info* db, ir_node *store, ir_node *addr, ir_mode *mod
  * @param *addr  A pointer to the variable to be read in this memory.
  * @param *val   The value to write to this variable.
  */
-ir_node *new_d_Store  (dbg_infodb, ir_node *store, ir_node *addr, ir_node *val);
+ir_node *new_d_Store  (dbg_info *db, ir_node *store, ir_node *addr, ir_node *val);
 
 /** Constructor for a Alloc node.
  *
@@ -3073,7 +3074,7 @@ ir_node *new_d_Store  (dbg_info* db, ir_node *store, ir_node *addr, ir_node *val
  * @param *alloc_type The type of the allocated variable.
  * @param where       Where to allocate the variable, either heap_alloc or stack_alloc.
  */
-ir_node *new_d_Alloc  (dbg_info* db, ir_node *store, ir_node *size, type *alloc_type,
+ir_node *new_d_Alloc  (dbg_info *db, ir_node *store, ir_node *size, ir_type *alloc_type,
                      where_alloc where);
 
  /** Constructor for a Free node.
@@ -3089,8 +3090,8 @@ ir_node *new_d_Alloc  (dbg_info* db, ir_node *store, ir_node *size, type *alloc_
  * @param *free_type  The type of the freed variable.
  * @param where       Where the variable was allocated, either heap_alloc or stack_alloc.
  */
-ir_node *new_d_Free   (dbg_infodb, ir_node *store, ir_node *ptr, ir_node *size,
-             type *free_type, where_alloc where);
+ir_node *new_d_Free   (dbg_info *db, ir_node *store, ir_node *ptr, ir_node *size,
+             ir_type *free_type, where_alloc where);
 
 /** Constructor for a Sync node.
  *
@@ -3104,7 +3105,7 @@ ir_node *new_d_Free   (dbg_info* db, ir_node *store, ir_node *ptr, ir_node *size
  * @param  **in     An array of pointers to nodes that produce an output of type
  *                  memory.  The constructor copies this array.
  */
-ir_node *new_d_Sync   (dbg_infodb, int arity, ir_node *in[]);
+ir_node *new_d_Sync   (dbg_info *db, int arity, ir_node *in[]);
 
 
 /** Constructor for a Proj node.
@@ -3118,7 +3119,7 @@ ir_node *new_d_Sync   (dbg_info* db, int arity, ir_node *in[]);
  * @param *mode  The mode of the value to project.
  * @param proj   The position of the value in the tuple.
  */
-ir_node *new_d_Proj   (dbg_infodb, ir_node *arg, ir_mode *mode, long proj);
+ir_node *new_d_Proj   (dbg_info *db, ir_node *arg, ir_mode *mode, long proj);
 
 
 /** Constructor for a defaultProj node.
@@ -3130,7 +3131,7 @@ ir_node *new_d_Proj   (dbg_info* db, ir_node *arg, ir_mode *mode, long proj);
  * @param arg       A node producing a tuple.
  * @param max_proj  The end  position of the value in the tuple.
  */
-ir_node *new_d_defaultProj (dbg_infodb, ir_node *arg, long max_proj);
+ir_node *new_d_defaultProj (dbg_info *db, ir_node *arg, long max_proj);
 
 /** Constructor for a Tuple node.
  *
@@ -3142,7 +3143,7 @@ ir_node *new_d_defaultProj (dbg_info* db, ir_node *arg, long max_proj);
  * @param arity   The number of tuple elements.
  * @param **in    An array containing pointers to the nodes producing the tuple elements.
  */
-ir_node *new_d_Tuple  (dbg_infodb, int arity, ir_node *in[]);
+ir_node *new_d_Tuple  (dbg_info *db, int arity, ir_node *in[]);
 
 
 /** Constructor for a Id node.
@@ -3154,7 +3155,7 @@ ir_node *new_d_Tuple  (dbg_info* db, int arity, ir_node *in[]);
  * @param *val    The operand to Id.
  * @param *mode   The mode of *val.
  */
-ir_node *new_d_Id     (dbg_infodb, ir_node *val, ir_mode *mode);
+ir_node *new_d_Id     (dbg_info *db, ir_node *val, ir_mode *mode);
 
 /** Constructor for a Bad node.
  *
@@ -3176,7 +3177,7 @@ ir_node *new_d_Bad    (void);
  * @param *bound  The value to compare against. Must be a firm node, typically a constant.
  * @param cmp     The compare operation.
  */
-ir_node *new_d_Confirm (dbg_infodb, ir_node *val, ir_node *bound, pn_Cmp cmp);
+ir_node *new_d_Confirm (dbg_info *db, ir_node *val, ir_node *bound, pn_Cmp cmp);
 
 
 /** Constructor for an Unknown node.
@@ -3277,7 +3278,7 @@ ir_node *new_d_Mux  (dbg_info *db, ir_node *sel,
  * @param *src        The ir_node that represents the source address.
  * @param *data_type  The type of the copied data
  */
-ir_node *new_d_CopyB(dbg_info *db, ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+ir_node *new_d_CopyB(dbg_info *db, ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type);
 
 /** Constructor for a Bound node.
  * Checks whether lower <= idx && idx < upper.
@@ -3426,7 +3427,7 @@ ir_node *new_Const_long(ir_mode *mode, long value);
 /** Constructor for a Const node.
  *
  * Derives mode from passed type. */
-ir_node *new_Const_type(tarval *con, type *tp);
+ir_node *new_Const_type(tarval *con, ir_type *tp);
 
 /** Constructor for a SymConst node.
  *
@@ -3488,16 +3489,16 @@ ir_node *new_simpleSel(ir_node *store, ir_node *objptr, entity *ent);
 ir_node *new_Sel    (ir_node *store, ir_node *objptr, int arity, ir_node *in[],
                      entity *ent);
 
-/** Constructor for an InstOf node.
+/** Constructor for a InstOf node.
  *
- * Adds the node to the block in current_ir_block.
- * For translating Java.  Not supported as standard firm node.
+ * A High-Level Type check.
  *
- * @param   *store  The actual store.
- * @param   *obj
- * @param   *ent
+ * @param   *store     The memory in which the object the entity should be selected
+ *                     from is allocated.
+ * @param   *objptr    A pointer to a object of a class type.
+ * @param   *type      The type of which objptr must be.
  */
-ir_node *new_InstOf (ir_node *store, ir_node *obj,  type *ent);
+ir_node *new_InstOf (ir_node *store, ir_node *objptr, ir_type *type);
 
 /** Constructor for a Call node.
  *
@@ -3511,7 +3512,7 @@ ir_node *new_InstOf (ir_node *store, ir_node *obj,  type *ent);
  * @param   *tp     Type information of the procedure called.
  */
 ir_node *new_Call   (ir_node *store, ir_node *callee, int arity, ir_node *in[],
-                    type *tp);
+                    ir_type *tp);
 
 /** Constructor for a CallBegin node.
  *
@@ -3713,7 +3714,7 @@ ir_node *new_Conv   (ir_node *op, ir_mode *mode);
  * @param   *op    The operand.
  * @param   *to_tp The type of this the operand muss be casted .
  */
-ir_node *new_Cast   (ir_node *op, type *to_tp);
+ir_node *new_Cast   (ir_node *op, ir_type *to_tp);
 
 /** Constructor for a Phi node.
  *
@@ -3751,7 +3752,7 @@ ir_node *new_Store  (ir_node *store, ir_node *addr, ir_node *val);
  * @param *alloc_type The type of the allocated variable.
  * @param where       Where to allocate the variable, either heap_alloc or stack_alloc.
  */
-ir_node *new_Alloc  (ir_node *store, ir_node *size, type *alloc_type,
+ir_node *new_Alloc  (ir_node *store, ir_node *size, ir_type *alloc_type,
                      where_alloc where);
 
 
@@ -3768,7 +3769,7 @@ ir_node *new_Alloc  (ir_node *store, ir_node *size, type *alloc_type,
  * @param where       Where the variable was allocated, either heap_alloc or stack_alloc.
  */
 ir_node *new_Free   (ir_node *store, ir_node *ptr, ir_node *size,
-                    type *free_type, where_alloc where);
+                    ir_type *free_type, where_alloc where);
 
 /** Constructor for a  Sync node.
  *
@@ -3900,7 +3901,7 @@ ir_node *new_Mux  (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *m
  * @param *src        The ir_node that represents the source address.
  * @param *data_type  The type of the copied data
  */
-ir_node *new_CopyB(ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+ir_node *new_CopyB(ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type);
 
 /** Constructor for a Bound node.
  * Checks whether lower <= idx && idx < upper.
@@ -3932,7 +3933,7 @@ ir_node *new_Bound(ir_node *store, ir_node *idx, ir_node *lower, ir_node *upper)
  * This constructor can only be used if the graph is in
  * state_building.
  */
-ir_node *new_d_immBlock (dbg_infodb);
+ir_node *new_d_immBlock (dbg_info *db);
 ir_node *new_immBlock (void);
 
 /** Add a control flow edge to an immature block. */
@@ -3992,7 +3993,7 @@ void set_store (ir_node *store);
 void keep_alive (ir_node *ka);
 
 /** Returns the frame type of the current graph */
-type *get_cur_frame_type(void);
+ir_type *get_cur_frame_type(void);
 
 
 /* --- initialize and finalize ir construction --- */
@@ -4025,4 +4026,4 @@ void irp_finalize_cons(void);
  */
 typedef ir_node *uninitialized_local_variable_func_t(ir_graph *irg, ir_mode *mode, int pos);
 
-# endif /* _IRCONS_H_ */
+#endif /* _IRCONS_H_ */