caller backedges uses raw_bitsets
[libfirm] / ir / ir / irtypes.h
index cfb741d..1bd39e1 100644 (file)
@@ -133,10 +133,8 @@ typedef struct {
        ir_node ** in_cg;           /**< array with predecessors in
                                     * interprocedural_view, if they differ
                                     * from intraprocedural predecessors */
-       int *backedge;              /**< Field n set to true if pred n is backedge.
-                                        @@@ @todo Ev. replace by bit field! */
-       int *cg_backedge;           /**< Field n set to true if pred n is interprocedural backedge.
-                                        @@@ @todo Ev. replace by bit field! */
+       unsigned *backedge;         /**< Raw Bitfield n set to true if pred n is backedge.*/
+       unsigned *cg_backedge;      /**< Raw Bitfield n set to true if pred n is interprocedural backedge. */
        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 */
@@ -209,9 +207,8 @@ typedef struct {
 /** Filter attributes. */
 typedef struct {
        long proj;                 /**< contains the result position to project (Proj) */
-       ir_node ** in_cg;          /**< array with interprocedural predecessors (Phi) */
-       int *backedge;             /**< Field n set to true if pred n is backedge.
-                                       @todo Ev. replace by bitfield! */
+       ir_node **in_cg;           /**< array with interprocedural predecessors (Phi) */
+       unsigned *backedge;        /**< Raw Bitfield n set to true if pred n is backedge. */
 } filter_attr;
 
 /** CallBegin attributes. */
@@ -301,9 +298,8 @@ typedef union {
        load_attr      load;          /**< For Load. */
        store_attr     store;         /**< For Store. */
        phi0_attr      phi0;          /**< for Phi0 nodes. */
-       int            *phi_backedge; /**< For Phi after construction.
-                                          Field n set to true if pred n is backedge.
-                                          @todo Ev. replace by bitfield! */
+       unsigned       *phi_backedge; /**< For Phi after construction.
+                                          Raw Bitfield n set to true if pred n is backedge. */
        long           proj;          /**< For Proj: contains the result position to project */
        confirm_attr   confirm;       /**< For Confirm: compare operation and region. */
        filter_attr    filter;        /**< For Filter */
@@ -416,8 +412,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 *anchor;               /**< The anchor node. */
-       ir_node **proj_args;           /**< Projs of the methods arguments. */
+       ir_node *anchor;               /**< Pointer to the anchor node of this graph. */
        struct obstack *obst;          /**< The obstack where all of the ir_nodes live. */
        ir_node *current_block;        /**< Current block for newly gen_*()-erated ir_nodes. */
        struct obstack *extbb_obst;    /**< The obstack for extended basic block info. */
@@ -462,7 +457,7 @@ struct ir_graph {
                                                the node. */
 
        ir_graph **callers;                /**< For callgraph analysis: list of caller graphs. */
-       unsigned char *caller_isbe;        /**< For callgraph analysis: set if backedge. */
+       unsigned *caller_isbe;             /**< For callgraph analysis: raw bitset if backedge. */
        cg_callee_entry **callees;         /**< For callgraph analysis: list of callee calls */
        unsigned char *callee_isbe;        /**< For callgraph analysis: set if backedge. */
        int        callgraph_loop_depth;         /**< For callgraph analysis */
@@ -483,10 +478,11 @@ struct ir_graph {
        irg_edges_info_t edge_info;        /**< edge info for automatic outs */
        ir_node **idx_irn_map;             /**< Array mapping node indexes to nodes. */
 
+       int index;                         /**< a unique number for each graph */
 #ifdef DEBUG_libfirm
-       int             n_outs;            /**< Size wasted for outs */
-       long graph_nr;                     /**< a unique graph number for each graph to make output
-                                               readable. */
+       int   n_outs;                      /**< Size wasted for outs */
+       long graph_nr;                     /**< a unique graph number for each
+                                               graph to make output readable. */
 #endif
 
 #ifndef NDEBUG
@@ -548,6 +544,7 @@ struct ir_prog {
 
        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. */
+       int  max_irg_idx;                    /**< highest unused irg index */
 #ifdef DEBUG_libfirm
        long max_node_nr;                    /**< to generate unique numbers for nodes. */
 #endif