Add a wrapper macro for ir_nodehashmap_get(), which has the return type as additional...
[libfirm] / ir / tr / type_t.h
index bb0acd1..65eb07a 100644 (file)
@@ -21,7 +21,6 @@
  * @file
  * @brief   Representation of types -- private header.
  * @author  Goetz Lindenmaier, Michael Beck
- * @version $Id$
  * @see     type.h tpop_t.h tpop.h
  */
 #ifndef FIRM_TR_TYPE_T_H
@@ -135,10 +134,12 @@ enum type_flags {
        tf_layout_fixed     = 1U << 1, /**< Set if the layout of a type is fixed */
 
        tf_frame_type       = 1U << 2, /**< Set if this is a frame type. */
-       tf_global_type      = 1U << 3, /**< Set only for the global type */
-       tf_tls_type         = 1U << 4, /**< Set only for the tls type */
-       tf_constructors     = 1U << 5, /**< Set only for the constructors segment type */
-       tf_destructors      = 1U << 6, /**< Set only for the destructors segment type */
+       tf_segment          = 1U << 3, /**< type represents a linker segment */
+       tf_global_type      = 1U << 4, /**< Set only for the global type */
+       tf_tls_type         = 1U << 5, /**< Set only for the tls type */
+       tf_constructors     = 1U << 6, /**< Set only for the constructors segment type */
+       tf_destructors      = 1U << 7, /**< Set only for the destructors segment type */
+       tf_variable_size    = 1U << 8, /**< compound or array type may have variable size last element */
 };
 ENUM_BITSET(type_flags)
 
@@ -185,18 +186,7 @@ struct ir_type {
                                      last entry in this struct!  Varying size! */
 };
 
-/**
- *   Creates a new type representation:
- *
- *   @param type_op  the kind of this type.  May not be type_id.
- *   @param mode     the mode to be used for this type, may be NULL
- *   @param db       debug info
- *
- *   @return A new type of the given type.  The remaining private attributes are not
- *           initialized.  The type is in state layout_undefined.
- */
-ir_type *new_type(const tp_op *type_op, ir_mode *mode, type_dbg_info *db);
-void free_type_attrs(ir_type *tp);
+void free_type_entities(ir_type *tp);
 
 void free_class_entities      (ir_type *clss);
 void free_struct_entities     (ir_type *strct);
@@ -236,10 +226,10 @@ int  get_class_dfn(const ir_type *clss);
 void add_compound_member(ir_type *compound, ir_entity *entity);
 
 /** Initialize the type module. */
-void ir_init_type(void);
+void ir_init_type(ir_prog *irp);
 
 /** free internal datastructures of type module */
-void ir_finish_type(void);
+void ir_finish_type(ir_prog *irp);
 
 /** Clone an existing method type.
  *