* @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
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)
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);
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.
*