X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Ffirmstat.h;h=a30ef26ee2e92c1d793c9d443f911cc56552c5b3;hb=cd51c273d337e69ee1a8f120e74cc0d8c785fb93;hp=f7365940726f0528a717d74741e956f1a4ba690b;hpb=93a4abbf753468fd351dc66d6ceac52a1cd2765c;p=libfirm diff --git a/ir/stat/firmstat.h b/ir/stat/firmstat.h index f73659407..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,125 +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_LOWERED = 9, /**< lowered */ - - STAT_OPT_MAX = 10 -} -stat_opt_kind; +#ifndef _FIRMSTAT_H_ +#define _FIRMSTAT_H_ /** - * initialize the statistics module. + * @file firmstat.h */ -void stat_init(void); +#include "irop.h" +#include "irnode.h" +#include "irgraph.h" /** - * Finish the statistics . + * Statistic options, can be or'ed. */ -void stat_finish(void); +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 IR op is registered. + * Finish the statistics. + * Never called from libFirm should be called from user. + * + * @param name basename of the statistic output file */ -void stat_new_ir_op(const ir_op *op); +void stat_finish(const char *name); -/** - * An IR op is freed. - */ -void stat_free_ir_op(const ir_op *op); - -/** - * A new node is created. - */ -void stat_new_node(const ir_node *node); - -/** - * 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(ir_graph *irg, entity *ent); - -/** - * A graph was deleted - */ -void stat_free_graph(ir_graph *irg); - -/** - * A walk over a graph is initiated - */ -void stat_irg_walk(ir_graph *irg, void *pre, void *post); - -/** - * A walk over the graph's blocks is initiated - */ -void stat_irg_block_walk(ir_graph *irg, const ir_node *node, void *pre, void *post); - -/** - * Some nodes were optimized into some others due to an optimization - */ -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); - -/** - * A node was lowered into other nodes - */ -void stat_lower(ir_node *node); - -/** - * A graph was inlined - */ -void stat_inline(ir_node *call, ir_graph *irg); - -/** - * Start the dead node elimination. - */ -void stat_dead_node_elim_start(ir_graph *irg); +#ifdef FIRM_STATISTICS /** - * Stops the dead node elimination. + * initialize the statistics module. + * + * @param enable_options a bitmask containing the statistic options */ -void stat_dead_node_elim_stop(ir_graph *irg); +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, ent) -#define stat_free_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 stat_lower(node) -#define stat_inline(call, irg) -#define stat_dead_node_elim_start(irg) -#define stat_dead_node_elim_stop(irg) +#define init_stat(enable_options) -#endif +#endif /* FIRM_STATISTICS */ #endif /* _FIRMSTAT_H_ */