irop_flag_highlevel flag added to Confirm and Cast
[libfirm] / ir / stat / firmstat_t.h
index 95438f9..2c515e3 100644 (file)
@@ -76,27 +76,30 @@ enum leaf_call_state_t {
  * An entry for ir_graphs. These numbers are calculated for every IR graph.
  */
 typedef struct _graph_entry_t {
-  HASH_MAP(node_entry_t)  *opcode_hash;             /**< hash map containing the opcode counter */
-  HASH_MAP(block_entry_t) *block_hash;              /**< hash map containing the block counter */
-  counter_t               cnt_walked;              /**< walker walked over the graph */
-  counter_t               cnt_walked_blocks;        /**< walker walked over the graph blocks */
-  counter_t               cnt_was_inlined;          /**< number of times other graph were inlined */
-  counter_t               cnt_got_inlined;          /**< number of times this graph was inlined */
-  counter_t               cnt_strength_red;         /**< number of times strength reduction was successful on this graph */
-  counter_t               cnt_edges;               /**< number of DF edges in this graph */
-  counter_t               cnt_all_calls;            /**< number of all calls */
-  counter_t               cnt_call_with_cnst_arg;   /**< number of calls with const args */
-  counter_t               cnt_indirect_calls;       /**< number of indirect calls */
-  HASH_MAP(opt_entry_t)   *opt_hash[HOOK_OPT_LAST]; /**< hash maps containing opcode counter for optimizations */
-  ir_graph                *irg;                     /**< the graph of this object */
-  entity                  *ent;                     /**< the entity of this graph if one exists */
-  set                     *address_mark;            /**< a set containing the address marks of the nodes */
-  unsigned                is_deleted:1;             /**< set if this irg was deleted */
-  unsigned                is_leaf:1;                /**< set, if this irg is a leaf function */
-  unsigned                is_leaf_call:2;           /**< set, if this irg calls only leaf functions */
-  unsigned                is_recursive:1;           /**< set, if this irg has recursive calls */
-  unsigned                is_chain_call:1;          /**< set, if this irg is a chain call */
-  unsigned                is_analyzed:1;            /**< helper: set, if this irg was already analysed */
+  HASH_MAP(node_entry_t)  *opcode_hash;                 /**< hash map containing the opcode counter */
+  HASH_MAP(block_entry_t) *block_hash;                  /**< hash map containing the block counter */
+  counter_t               cnt_walked;                    /**< walker walked over the graph */
+  counter_t               cnt_walked_blocks;            /**< walker walked over the graph blocks */
+  counter_t               cnt_was_inlined;              /**< number of times other graph were inlined */
+  counter_t               cnt_got_inlined;              /**< number of times this graph was inlined */
+  counter_t               cnt_strength_red;             /**< number of times strength reduction was successful on this graph */
+  counter_t               cnt_edges;                    /**< number of DF edges in this graph */
+  counter_t               cnt_all_calls;                /**< number of all calls */
+  counter_t               cnt_call_with_cnst_arg;       /**< number of calls with const args */
+  counter_t               cnt_indirect_calls;           /**< number of indirect calls */
+  counter_t               cnt_if_conv[IF_RESULT_LAST];  /**< number of if conversions */
+  counter_t               cnt_real_func_call;           /**< number real function call optimization */
+  unsigned                num_tail_recursion;           /**< number of tail recursion optimizations */
+  HASH_MAP(opt_entry_t)   *opt_hash[HOOK_OPT_LAST];     /**< hash maps containing opcode counter for optimizations */
+  ir_graph                *irg;                         /**< the graph of this object */
+  entity                  *ent;                         /**< the entity of this graph if one exists */
+  set                     *address_mark;                /**< a set containing the address marks of the nodes */
+  unsigned                is_deleted:1;                 /**< set if this irg was deleted */
+  unsigned                is_leaf:1;                    /**< set, if this irg is a leaf function */
+  unsigned                is_leaf_call:2;               /**< set, if this irg calls only leaf functions */
+  unsigned                is_recursive:1;               /**< set, if this irg has recursive calls */
+  unsigned                is_chain_call:1;              /**< set, if this irg is a chain call */
+  unsigned                is_analyzed:1;                /**< helper: set, if this irg was already analysed */
 } graph_entry_t;
 
 /**
@@ -115,6 +118,7 @@ typedef struct _block_entry_t {
   counter_t  cnt_edges;                        /**< the counter of edges in this block */
   counter_t  cnt_in_edges;             /**< the counter of edges incoming from other blocks to this block */
   counter_t  cnt_out_edges;            /**< the counter of edges outgoing from this block to other blocks */
+  counter_t  cnt_phi_data;              /**< the counter of data Phi nodes in this block */
   long       block_nr;                 /**< block nr */
 } block_entry_t;
 
@@ -162,6 +166,8 @@ typedef struct _statistic_info_t {
   ir_op                   *op_DivC;            /**< pseudo op for division by const */
   ir_op                   *op_ModC;            /**< pseudo op for modulo by const */
   ir_op                   *op_DivModC;         /**< pseudo op for DivMod by const */
+  ir_op                   *op_SelSel;          /**< pseudo op for Sel(Sel) */
+  ir_op                   *op_SelSelSel;       /**< pseudo op for Sel(Sel(Sel)) */
   dumper_t                *dumper;             /**< list of dumper */
   int                     reassoc_run;          /**< if set, reassociation is running */
   int                     stat_options;                /**< statistic options */