rename Store_align/Load_align to XXX_unaligned and correctly put it into the spec...
[libfirm] / ir / ir / irtypes.h
index 96da35b..d79722e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -243,7 +243,7 @@ typedef struct cast_attr {
 typedef struct load_attr {
        except_attr   exc;            /**< The exception attribute. MUST be the first one. */
     unsigned      volatility:1;   /**< The volatility of this Load operation. */
-    unsigned      aligned:1;      /**< The align attribute of this Load operation. */
+    unsigned      unaligned:1;    /**< The align attribute of this Load operation. */
        ir_mode       *mode;          /**< The mode of this Load operation. */
 } load_attr;
 
@@ -251,7 +251,7 @@ typedef struct load_attr {
 typedef struct store_attr {
        except_attr   exc;            /**< the exception attribute. MUST be the first one. */
        unsigned      volatility:1;   /**< The volatility of this Store operation. */
-       unsigned      aligned:1;      /**< The align attribute of this Store operation. */
+       unsigned      unaligned:1;    /**< The align attribute of this Store operation. */
 } store_attr;
 
 typedef struct phi_attr {
@@ -267,10 +267,14 @@ typedef struct phi_attr {
        } u;
 } phi_attr;
 
+/**< Cmp attribute. */
+typedef struct cmp_attr {
+       ir_relation relation;         /**< comparison condition. */
+} cmp_attr;
 
 /**< Confirm attribute. */
 typedef struct confirm_attr {
-       pn_Cmp cmp;                   /**< The compare operation. */
+       ir_relation relation;         /**< relation between value and bound */
 } confirm_attr;
 
 /** CopyB attribute. */
@@ -289,12 +293,18 @@ typedef struct conv_attr {
        char           strict;        /**< If set, this is a strict Conv that cannot be removed. */
 } conv_attr;
 
-/** Div/Mod/DivMod/Quot attribute. */
-typedef struct divmod_attr {
+/** Div attribute. */
+typedef struct div_attr {
        except_attr    exc;           /**< The exception attribute. MUST be the first one. */
        ir_mode        *resmode;      /**< Result mode for the division. */
        char           no_remainder;  /**< Set, if known that a division can be done without a remainder. */
-} divmod_attr;
+} div_attr;
+
+/** Mod attribute. */
+typedef struct mod_attr {
+       except_attr    exc;           /**< The exception attribute. MUST be the first one. */
+       ir_mode        *resmode;      /**< Result mode for the division. */
+} mod_attr;
 
 /** Inline Assembler support attribute. */
 typedef struct asm_attr {
@@ -306,6 +316,10 @@ typedef struct asm_attr {
        ident             **clobbers;           /**< List of clobbered registers. */
 } asm_attr;
 
+typedef struct proj_attr {
+       long  proj;           /**< position of tuple sub-value which is projected */
+} proj_attr;
+
 /** Some IR-nodes just have one attribute, these are stored here,
    some have more. Their name is 'irnodename_attr' */
 typedef union ir_attr {
@@ -313,6 +327,7 @@ typedef union ir_attr {
        bad_attr       bad;           /**< for Bads: irg reference */
        anchor_attr    anchor;        /**< for Anchor: irg reference */
        block_attr     block;         /**< For Block: Fields needed to construct it */
+       cmp_attr       cmp;           /**< For Cmp. */
        cond_attr      cond;          /**< For Cond. */
        const_attr     con;           /**< For Const: contains the value of the constant and a type */
        symconst_attr  symc;          /**< For SymConst. */
@@ -326,13 +341,14 @@ typedef union ir_attr {
        load_attr      load;          /**< For Load. */
        store_attr     store;         /**< For Store. */
        phi_attr       phi;           /**< For Phi. */
-       long           proj;          /**< For Proj: contains the result position to project */
+       proj_attr      proj;          /**< For Proj. */
        confirm_attr   confirm;       /**< For Confirm: compare operation and region. */
        except_attr    except;        /**< For Phi node construction in case of exceptions */
        copyb_attr     copyb;         /**< For CopyB operation */
        bound_attr     bound;         /**< For Bound operation */
        conv_attr      conv;          /**< For Conv operation */
-       divmod_attr    divmod;        /**< For Div/Mod/DivMod operation */
+       div_attr       div;           /**< For Div operation */
+       mod_attr       mod;           /**< For Mod operation */
        asm_attr       assem;         /**< For ASM operation. */
 } ir_attr;
 
@@ -429,7 +445,7 @@ enum irg_anchors {
 typedef struct cg_callee_entry {
        ir_graph  *irg;        /**< The called irg. */
        ir_node  **call_list;  /**< The list of all calls to the irg. */
-       int        max_depth;  /**< Maximum depth of all Call nodes to irg. */
+       size_t     max_depth;  /**< Maximum depth of all Call nodes to irg. */
 } cg_callee_entry;
 
 /**
@@ -489,8 +505,8 @@ struct ir_graph {
        cg_callee_entry **callees;         /**< For callgraph analysis: list of callee calls */
        unsigned *callee_isbe;             /**< For callgraph analysis: raw bitset if backedge info calculated. */
        ir_loop   *l;                            /**< For callgraph analysis. */
-       int        callgraph_loop_depth;         /**< For callgraph analysis */
-       int        callgraph_recursion_depth;    /**< For callgraph analysis */
+       size_t     callgraph_loop_depth;         /**< For callgraph analysis */
+       size_t     callgraph_recursion_depth;    /**< For callgraph analysis */
        double     method_execution_frequency;   /**< For callgraph analysis */
 
 
@@ -572,8 +588,8 @@ struct ir_prog {
        irp_callgraph_state callgraph_state; /**< The state of the callgraph. */
        ir_loop *outermost_cg_loop;          /**< For callgraph analysis: entry point
                                                      to looptree over callgraph. */
-       int max_callgraph_loop_depth;        /**< needed in callgraph. */
-       int max_callgraph_recursion_depth;   /**< needed in callgraph. */
+       size_t max_callgraph_loop_depth;        /**< needed in callgraph. */
+       size_t max_callgraph_recursion_depth;   /**< needed in callgraph. */
        double max_method_execution_frequency;  /**< needed in callgraph. */
        irp_temperature_state temperature_state; /**< accumulated temperatures computed? */
        exec_freq_state execfreq_state;      /**< The state of execution frequency information */