/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
* PURPOSE.
*/
-/*
- * Project: libFIRM
- * File name: ir/stat/firmstat_t.h
- * Purpose: Statistics for Firm. Internal data structures.
- * Author: Michael Beck
- * Created:
- * CVS-ID: $Id$
- * Copyright: (c) 2004 Universität Karlsruhe
- */
-#ifndef _FIRMSTAT_T_H_
-#define _FIRMSTAT_T_H_
-
/**
- * @file firmstat_t.h
+ * @file
+ * @brief Statistics for Firm. Internal data structures.
+ * @author Michael Beck
+ * @version $Id$
*/
+#ifndef FIRM_STAT_FIRMSTAT_T_H
+#define FIRM_STAT_FIRMSTAT_T_H
+
#include "firmstat.h"
#include "irop_t.h"
counter_t cnt_alive; /**< amount of nodes in this entry */
counter_t new_node; /**< amount of new nodes for this entry */
counter_t into_Id; /**< amount of nodes that turned into Id's for this entry */
+ counter_t normalized; /**< amount of nodes that normalized for this entry */
const ir_op *op; /**< the op for this entry */
} node_entry_t;
gcnt_call_with_all_cnst_arg, /**< number of calls with all const args */
gcnt_call_with_local_adr, /**< number of calls with address of local var args */
gcnt_indirect_calls, /**< number of indirect calls */
+ gcnt_external_calls, /**< number of external calls */
gcnt_pure_adr_ops, /**< number of pure address operation */
gcnt_all_adr_ops, /**< number of all address operation */
gcnt_global_adr, /**< number of global load/store addresses. */
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_strict:1; /**< set, if this irg represents a strict program */
unsigned is_analyzed:1; /**< helper: set, if this irg was already analysed */
} graph_entry_t;
* An entry for a block or extended block in a ir-graph
*/
typedef struct _block_entry_t {
- counter_t cnt[_bcnt_last]; /**< counter */
- long block_nr; /**< block nr */
+ counter_t cnt[_bcnt_last]; /**< counter */
+ long block_nr; /**< block nr */
+ unsigned is_start:1; /**< set, if it's the Start block. */
+ unsigned is_end:1; /**< set, if it's the End block. */
} block_entry_t;
/** An entry for an extended block in a ir-graph */
STAT_FC_1, /**< the float value 1.0 */
STAT_FC_2, /**< the float value 2.0 */
STAT_FC_0_5, /**< the float value 0.5 */
- STAT_FC_EXACT, /**< an exact value */
+ STAT_FC_POWER_OF_TWO, /**< another 2^x value */
STAT_FC_OTHER, /**< all other values */
STAT_FC_MAX /**< last value */
} float_classify_t;
*/
typedef void (*dump_param_tbl_FUNC)(dumper_t *dmp, const distrib_tbl_t *tbl, graph_entry_t *global);
+/**
+ * dumps the optimizations counter
+ */
+typedef void (*dump_opt_cnt_FUNC)(dumper_t *dumper, const counter_t *tbl, unsigned len);
+
/**
* handler for dumper init
*
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_QuotC; /**< pseudo op for floating point division 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 */
constant_info_t const_info; /**< statistic info for constants */
- distrib_tbl_t *dist_param_cnt; /**< distributation table for call parameters */
+ distrib_tbl_t *dist_param_cnt; /**< distribution table for call parameters */
+
+ counter_t num_opts[FS_OPT_MAX];/**< count optimizations */
} stat_info_t;
/**
struct _dumper_t {
dump_graph_FUNC dump_graph; /**< handler for dumping an irg */
dump_const_table_FUNC dump_const_tbl; /**< handler for dumping a const table */
- dump_param_tbl_FUNC dump_param_tbl; /**< handler for dumper the Call parameter table */
+ dump_param_tbl_FUNC dump_param_tbl; /**< handler for dumping the Call parameter table */
+ dump_opt_cnt_FUNC dump_opt_cnt; /**< handler for dumping the optimization table. */
dump_init_FUNC init; /**< handler for init */
dump_finish_FUNC finish; /**< handler for finish */
FILE *f; /**< the file to dump to */
*/
void stat_register_dumper_func(dump_graph_FUNC func);
-#endif /* _FIRMSTAT_T_H_ */
+#endif /* FIRM_STAT_FIRMSTAT_T_H */