fehler66 (more unsigned int -> double magic)
[libfirm] / ir / ir / irtypes.h
index 84c0690..8b58de7 100644 (file)
@@ -119,6 +119,7 @@ typedef struct {
        unsigned is_matured:1;      /**< If set, all in-nodes of the block are fixed. */
        unsigned is_dead:1;         /**< If set, the block is dead (and could be replace by a Bad. */
        unsigned is_mb_head:1;      /**< Set if this block is a macroblock head. */
+       unsigned has_label:1;       /**< Set if this block has a label assigned. */
        ir_node **graph_arr;        /**< An array to store all parameters. */
        /* Attributes holding analyses information */
        ir_dom_info dom;            /**< Datastructure that holds information about dominators.
@@ -137,6 +138,7 @@ typedef struct {
        ir_extblk *extblk;          /**< The extended basic block this block belongs to. */
        ir_region *region;          /**< The immediate structural region this block belongs to. */
        unsigned mb_depth;          /**< The macroblock depth: A distance from the macroblock header */
+       ir_label_t label;           /**< The block label if assigned. */
 
        struct list_head succ_head; /**< A list head for all successor edges of a block. */
 } block_attr;
@@ -224,13 +226,15 @@ typedef struct {
 typedef struct {
        except_attr   exc;            /**< The exception attribute. MUST be the first one. */
        ir_mode       *load_mode;     /**< The mode of this Load operation. */
-       ir_volatility volatility;     /**< The volatility of a Load/Store operation. */
+       unsigned      volatility:1;   /**< The volatility of this Load operation. */
+       unsigned      aligned:1;      /**< The align attribute of this Load operation. */
 } load_attr;
 
 /** Store attributes. */
 typedef struct {
        except_attr   exc;            /**< the exception attribute. MUST be the first one. */
-       ir_volatility volatility;     /**< the volatility of a Store operation */
+       unsigned      volatility:1;   /**< The volatility of this Store operation. */
+       unsigned      aligned:1;      /**< The align attribute of this Store operation. */
 } store_attr;
 
 typedef struct {
@@ -368,13 +372,13 @@ typedef struct _irg_edge_info_t {
 typedef irg_edge_info_t irg_edges_info_t[EDGE_KIND_LAST];
 
 /**
- * Index constants for nodes that can be accessed through the graph itself.
+ * Index constants for nodes that can be accessed through the graph anchor node.
  */
 enum irg_anchors {
-       anchor_start_block = 0,  /**< block the start node will belong to */
-       anchor_start,            /**< start node of this ir_graph */
-       anchor_end_block,        /**< block the end node will belong to */
+       anchor_end_block = 0,    /**< block the end node will belong to, same as Anchors block */
+       anchor_start_block,      /**< block the start node will belong to */
        anchor_end,              /**< end node of this ir_graph */
+       anchor_start,            /**< start node of this ir_graph */
        anchor_end_reg,          /**< end node of this ir_graph */
        anchor_end_except,       /**< end node of this ir_graph */
        anchor_frame,            /**< method's frame */
@@ -388,7 +392,7 @@ enum irg_anchors {
        anchor_bad,              /**< bad node of this ir_graph, the one and
                                      only in this graph */
        anchor_no_mem,           /**< NoMem node of this ir_graph, the one and only in this graph */
-       anchor_max
+       anchor_last
 };
 
 /** A callgraph entry for callees. */
@@ -409,7 +413,7 @@ struct ir_graph {
                                            class it belongs to. */
        ir_type *frame_type;           /**< A class type representing the stack frame.
                                            Can include "inner" methods. */
-       ir_node *anchors[anchor_max];  /**< List of anchor nodes. */
+       ir_node *anchor;               /**< The anchor node. */
        ir_node **proj_args;           /**< Projs of the methods arguments. */
        struct obstack *obst;          /**< The obstack where all of the ir_nodes live. */
        ir_node *current_block;        /**< Current block for newly gen_*()-erated ir_nodes. */
@@ -538,6 +542,7 @@ struct ir_prog {
        ir_address_taken_computed_state globals_adr_taken_state;  /**< Address taken state of the globals. */
 
        ir_exc_region_t last_region_nr;      /**< The last exception region number that was assigned. */
+       ir_label_t last_label_nr;            /**< The highest label number for generating unique labels. */
 #ifdef DEBUG_libfirm
        long max_node_nr;                    /**< to generate unique numbers for nodes. */
 #endif