X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Ffirmstat.h;h=a30ef26ee2e92c1d793c9d443f911cc56552c5b3;hb=cd51c273d337e69ee1a8f120e74cc0d8c785fb93;hp=bcac2d78b52143369dc99529049e17da03627bcd;hpb=a7212f39d345d3bf1a6eef06cf1853f41e409e05;p=libfirm diff --git a/ir/stat/firmstat.h b/ir/stat/firmstat.h index bcac2d78b..a30ef26ee 100644 --- a/ir/stat/firmstat.h +++ b/ir/stat/firmstat.h @@ -1,6 +1,6 @@ /* * Project: libFIRM - * File name: ir/ir/firmstat.h + * File name: ir/stat/firmstat.h * Purpose: Statistics for Firm. * Author: Michael Beck * Created: @@ -8,94 +8,50 @@ * Copyright: (c) 2004 Universität Karlsruhe * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. */ - - -# ifndef _FIRMSTAT_H_ -# define _FIRMSTAT_H_ - -#ifdef FIRM_STATISTICS - -typedef enum { - STAT_OPT_STG = 0, /**< straightening optimization */ - STAT_OPT_IFSIM = 1, /**< if simplification */ - STAT_OPT_ALGSIM = 2, /**< algebraic simplification */ - STAT_OPT_PHI = 3, /**< Phi optmization */ - STAT_OPT_WAW = 4, /**< Write-After-Write optimization */ - STAT_OPT_WAR = 5, /**< Write-After-Read optimization */ - STAT_OPT_TUPLE = 6, /**< Tuple optimization */ - STAT_OPT_ID = 7, /**< ID optimization */ - STAT_OPT_CONST_EVAL = 8, /**< constant evaluation */ - - STAT_OPT_MAX = 9 -} -stat_opt_kind; - -/** - * initialize the statistics module. - */ -void stat_init(void); - -/** - * Finish the statistics . - */ -void stat_finish(void); +#ifndef _FIRMSTAT_H_ +#define _FIRMSTAT_H_ /** - * A new IR op is registered. + * @file firmstat.h */ -void stat_new_ir_op(const ir_op *op); +#include "irop.h" +#include "irnode.h" +#include "irgraph.h" /** - * An IR op is freed. + * Statistic options, can be or'ed. */ -void stat_free_ir_op(const ir_op *op); +enum firmstat_options_t { + FIRMSTAT_ENABLED = 0x00000001, /**< enable statistics */ + FIRMSTAT_PATTERN_ENABLED = 0x00000002, /**< enable pattern calculation */ + FIRMSTAT_COUNT_STRONG_OP = 0x00000004, /**< if set, count Mul/Div/Mod/DivMod by constant */ + FIRMSTAT_COUNT_DAG = 0x00000008, /**< if set, count DAG statistics */ + FIRMSTAT_COUNT_DELETED = 0x00000010, /**< if set, count deleted graphs */ + FIRMSTAT_COUNT_SELS = 0x00000020, /**< if set, count Sel(Sel(..)) differently */ + FIRMSTAT_CSV_OUTPUT = 0x10000000 /**< CSV output of some mini-statistic */ +}; /** - * A new node is created. + * Finish the statistics. + * Never called from libFirm should be called from user. + * + * @param name basename of the statistic output file */ -void stat_new_node(const ir_node *node); +void stat_finish(const char *name); -/** - * A node is changed into a Id node - */ -void stat_turn_into_id(const ir_node *node); - -/** - * A new graph was created - */ -void stat_new_graph(const ir_graph *irg); - -/** - * A walk over a graph is initiated - */ -void stat_irg_walk(const ir_graph *irg, void *pre, void *post); - -/** - * A walk over the graph's blocks is initiated - */ -void stat_irg_block_walk(const ir_graph *irg, const ir_node *node, void *pre, void *post); +#ifdef FIRM_STATISTICS /** - * Some nodes were optimized into some others due to an optimization + * initialize the statistics module. + * + * @param enable_options a bitmask containing the statistic options */ -void stat_merge_nodes( - ir_node **new_node_array, int new_num_entries, - ir_node **old_node_array, int old_num_entries, - stat_opt_kind opt); +void init_stat(unsigned enable_options); #else -#define stat_init() -#define stat_finish() -#define stat_new_ir_op(op) -#define stat_free_ir_op(op) -#define stat_new_node(node) -#define stat_turn_into_id(node) -#define stat_new_graph(irg) -#define stat_irg_walk(irg, pre, post) -#define stat_irg_block_walk(irg, node, pre, post) -#define stat_merge_nodes(new_node_array, new_num_entries, old_node_array, old_num_entries, opt) +#define init_stat(enable_options) -#endif +#endif /* FIRM_STATISTICS */ #endif /* _FIRMSTAT_H_ */