* @date 25.11.2004
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include <stdarg.h>
#include <stdio.h>
memset(asm_constraint_flags, 0, sizeof(asm_constraint_flags));
env->arch_env = arch_env_init(isa_if, file_handle, env);
- be_phi_handler_new(env);
+ be_phi_handler_new();
be_dbg_open();
return env;
dump(DUMP_INITIAL, irg, "-begin", dump_ir_block_graph);
- be_stat_init_irg(env->arch_env, irg);
- be_do_stat_nodes(irg, "01 Begin");
-
/* set the current graph (this is important for several firm functions) */
current_ir_graph = irg;
/* reset the phi handler. */
be_phi_handler_reset();
- stat_ev_ctx_push_fobj("bemain_irg", irg);
+ stat_ev_if {
+ stat_ev_ctx_push_fobj("bemain_irg", irg);
+ be_stat_ev("bemain_insns_start", be_count_insns(irg));
+ be_stat_ev("bemain_blocks_start", be_count_blocks(irg));
+ }
/* stop and reset timers */
BE_TIMER_PUSH(t_other); /* t_other */
BE_TIMER_POP(t_abi);
dump(DUMP_ABI, irg, "-abi", dump_ir_block_graph);
- be_do_stat_nodes(irg, "02 Abi");
if (be_options.vrfy_option == BE_VRFY_WARN) {
be_check_dominance(irg);
/* reset the phi handler. */
be_phi_handler_reset();
- be_do_stat_nodes(irg, "03 Prepare");
-
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
if (be_options.vrfy_option == BE_VRFY_WARN) {
be_sched_vrfy(birg, be_options.vrfy_option);
BE_TIMER_POP(t_verify);
- be_do_stat_nodes(irg, "04 Schedule");
-
/* introduce patterns to assure constraints */
BE_TIMER_PUSH(t_constr);
/* we switch off optimizations here, because they might cause trouble */
BE_TIMER_POP(t_constr);
dump(DUMP_SCHED, irg, "-assured", dump_ir_block_graph_sched);
- be_do_stat_nodes(irg, "05 Constraints");
/* stuff needs to be done after scheduling but before register allocation */
BE_TIMER_PUSH(t_codegen);
be_sched_vrfy(birg, be_options.vrfy_option);
BE_TIMER_POP(t_verify);
-#ifdef FIRM_STATISTICS
- stat_ev_dbl("bemain_costs_before_ra", be_estimate_irg_costs(irg, arch_env, birg->exec_freq));
-#endif
+ stat_ev_if {
+ stat_ev_dbl("bemain_costs_before_ra",
+ be_estimate_irg_costs(irg, birg->exec_freq));
+ be_stat_ev("bemain_insns_before_ra", be_count_insns(irg));
+ be_stat_ev("bemain_blocks_before_ra", be_count_blocks(irg));
+ }
/* Do register allocation */
be_allocate_registers(birg);
#ifdef FIRM_STATISTICS
- stat_ev_dbl("bemain_costs_before_ra", be_estimate_irg_costs(irg, arch_env, birg->exec_freq));
+ stat_ev_dbl("bemain_costs_before_ra", be_estimate_irg_costs(irg, birg->exec_freq));
#endif
dump(DUMP_RA, irg, "-ra", dump_ir_block_graph_sched);
- be_do_stat_nodes(irg, "06 Register Allocation");
/* let the code generator prepare the graph for emitter */
BE_TIMER_PUSH(t_finish);
dump(DUMP_FINAL, irg, "-finish", dump_ir_block_graph_sched);
+ stat_ev_if {
+ be_stat_ev("bemain_insns_finish", be_count_insns(irg));
+ be_stat_ev("bemain_blocks_finish", be_count_blocks(irg));
+ }
+
/* check schedule and register allocation */
BE_TIMER_PUSH(t_verify);
if (be_options.vrfy_option == BE_VRFY_WARN) {
be_abi_free(birg->abi);
BE_TIMER_POP(t_abi);
- be_do_stat_nodes(irg, "07 Final");
restore_optimization_state(&state);
BE_TIMER_POP(t_other);
else
bitset_clear_all(bs);
- assert(bitset_size(bs) == (unsigned)cls->n_regs);
- arch_put_non_ignore_regs(birg->main_env->arch_env, cls, bs);
+ assert(bitset_size(bs) == cls->n_regs);
+ arch_put_non_ignore_regs(cls, bs);
bitset_flip_all(bs);
be_abi_put_ignore_regs(birg->abi, cls, bs);