remove symconst_type_tag
[libfirm] / include / libfirm / firm_types.h
index 3c3657e..3a356af 100644 (file)
@@ -21,7 +21,6 @@
  * @file
  * @brief      Definition of opaque firm types
  * @author     Michael Beck
- * @version    $Id$
  */
 #ifndef FIRM_COMMON_FIRM_TYPES_H
 #define FIRM_COMMON_FIRM_TYPES_H
@@ -47,14 +46,12 @@ typedef struct ir_graph             ir_graph,            *ir_graph_ptr;
 typedef struct ir_prog              ir_prog,             *ir_prog_ptr;
 typedef struct ir_loop              ir_loop,             *ir_loop_ptr;
 typedef struct ir_region            ir_region,           *ir_region_ptr;
-typedef struct ir_reg_tree          ir_reg_tree,         *ir_reg_tree_ptr;
 typedef struct ir_entity            ir_entity,           *ir_entity_ptr;
 typedef struct ir_extblk            ir_extblk,           *ir_extblk_ptr;
 typedef struct ir_exec_freq         ir_exec_freq,        *ir_exec_freq_ptr;
 typedef struct ir_cdep              ir_cdep,             *ir_cdep_ptr;
 typedef struct sn_entry             *seqno_t;
 typedef struct arch_irn_ops_t       arch_irn_ops_t;
-typedef struct type_identify_if_t   type_identify_if_t;
 typedef struct ir_graph_pass_t      ir_graph_pass_t;
 typedef struct ir_prog_pass_t       ir_prog_pass_t;
 
@@ -66,9 +63,12 @@ typedef union  ir_initializer_t     ir_initializer_t,    *ir_initializer_ptr;
 typedef void irg_walk_func(ir_node *, void *);
 typedef void irg_reg_walk_func(ir_region *, void *);
 
-/* settings */
-typedef struct ir_settings_arch_dep_t ir_settings_arch_dep_t;
-typedef struct ir_settings_if_conv_t  ir_settings_if_conv_t;
+/**
+ * A switch table mapping integer numbers to proj-numbers of a Switch-node.
+ * Entries map a continuous range of integer numbers to a proj-number.
+ * There must never be two different entries matching the same integer number.
+ */
+typedef struct ir_switch_table  ir_switch_table;
 
 /* Needed for MSVC to suppress warnings because it doest NOT handle const right. */
 typedef const ir_node *ir_node_cnst_ptr;
@@ -131,7 +131,7 @@ typedef enum ir_relation {
        ir_relation_less_greater       = ir_relation_less|ir_relation_greater,  /** less or greater ('not equal' for integer numbers) */
        ir_relation_less_equal_greater = ir_relation_equal|ir_relation_less|ir_relation_greater, /**< less equal or greater ('not unordered') */
        ir_relation_unordered_equal    = ir_relation_unordered|ir_relation_equal, /**< unordered or equal */
-       ir_relation_unordered_less     = ir_relation_unordered|ir_relation_less,  /**< unorderedor less */
+       ir_relation_unordered_less     = ir_relation_unordered|ir_relation_less,  /**< unordered or less */
        ir_relation_unordered_less_equal = ir_relation_unordered|ir_relation_less|ir_relation_equal, /**< unordered, less or equal */
        ir_relation_unordered_greater    = ir_relation_unordered|ir_relation_greater, /**< unordered or greater */
        ir_relation_unordered_greater_equal = ir_relation_unordered|ir_relation_greater|ir_relation_equal, /**< unordered, greater or equal */
@@ -144,10 +144,13 @@ ENUM_BITSET(ir_relation)
  * constrained flags for memory operations.
  */
 typedef enum ir_cons_flags {
-       cons_none      = 0,        /**< No constrains. */
-       cons_volatile  = 1U << 0,  /**< Memory operation is volatile. */
-       cons_unaligned = 1U << 1,  /**< Memory operation is unaligned. */
-       cons_floats    = 1U << 2   /**< Memory operation can float. */
+       cons_none             = 0,        /**< No constrains. */
+       cons_volatile         = 1U << 0,  /**< Memory operation is volatile. */
+       cons_unaligned        = 1U << 1,  /**< Memory operation is unaligned. */
+       cons_floats           = 1U << 2,  /**< Memory operation can float. */
+       cons_throws_exception = 1U << 3,  /**< fragile op throws exception (and
+                                              produces X_regular and X_except
+                                              values) */
 } ir_cons_flags;
 ENUM_BITSET(ir_cons_flags)
 
@@ -217,8 +220,6 @@ ENUM_BITSET(mtp_additional_properties)
  * SymConst.  The content of the attribute symconst_symbol depends on this tag.
  * Use the proper access routine after testing this flag. */
 typedef enum symconst_kind {
-       symconst_type_tag,    /**< The SymConst is a type tag for the given type.
-                                  symconst_symbol is type *. */
        symconst_type_size,   /**< The SymConst is the size of the given type.
                                   symconst_symbol is type *. */
        symconst_type_align,  /**< The SymConst is the alignment of the given type.
@@ -271,18 +272,9 @@ typedef enum ir_builtin_kind {
        ir_bk_inport,                 /**< in port */
        ir_bk_outport,                /**< out port */
        ir_bk_inner_trampoline,       /**< address of a trampoline for GCC inner functions */
+       ir_bk_last = ir_bk_inner_trampoline,
 } ir_builtin_kind;
 
-/**
- * Some projection numbers must be always equal to support automatic phi construction
- */
-enum pn_generic {
-       pn_Generic_M         = 0,  /**< The memory result. */
-       pn_Generic_X_regular = 1,  /**< Execution result if no exception occurred. */
-       pn_Generic_X_except  = 2,  /**< The control flow result branching to the exception handler */
-       pn_Generic_other     = 3   /**< First free projection number */
-};
-
 /**
  * Possible return values of value_classify().
  */