X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=81a428a2a708e1829ae1b92323a63dc3bf85ab0d;hb=b7aa66eb5b4b4668d2b009020d3ee9be9bdaf56c;hp=289d690aca96b98f688c6a952701195d4ecf129a;hpb=4a46f839c722b49ba91740136e6ad9a29497c35a;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 289d690ac..81a428a2a 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -1,8 +1,8 @@ /** * Backend driver. * @author Sebastian Hack - * @date 25.11.2004 - * $Id$ + * @date 25.11.2004 + * @cvsid $Id$ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -249,6 +249,12 @@ const backend_params *be_init(void) return &be_params; } +/** + * Initializes the main environment for the backend. + * + * @param env an empty environment + * @param file_handle the file handle where the output will be written to + */ static be_main_env_t *be_init_env(be_main_env_t *env, FILE *file_handle) { memset(env, 0, sizeof(*env)); @@ -282,6 +288,15 @@ static void be_done_env(be_main_env_t *env) obstack_free(&env->obst, NULL); } +/** + * A wrapper around a firm dumper. Dumps only, if + * flags are enabled. + * + * @param mask a bitmask containing the reason what will be dumped + * @param irg the IR graph to dump + * @param suffix the suffix for the dumper + * @param dumper the dumper to be called + */ static void dump(int mask, ir_graph *irg, const char *suffix, void (*dumper)(ir_graph *, const char *)) { @@ -323,6 +338,8 @@ static void prepare_graph(be_irg_t *birg) * The Firm backend main loop. * Do architecture specific lowering for all graphs * and call the architecture specific code generator. + * + * @param file_handle the file handle the output will be written to */ static void be_main_loop(FILE *file_handle) { @@ -334,7 +351,7 @@ static void be_main_loop(FILE *file_handle) isa = arch_env_get_isa(env.arch_env); - // /* for debugging, anchors helps */ + /* for debugging, anchors helps */ // dump_all_anchors(1); /* For all graphs */ @@ -342,7 +359,7 @@ static void be_main_loop(FILE *file_handle) ir_graph *irg = get_irp_irg(i); const arch_code_generator_if_t *cg_if; be_irg_t birg; - int save_optimize, save_normalize; + optimization_state_t state; birg.irg = irg; birg.main_env = &env; @@ -404,8 +421,7 @@ static void be_main_loop(FILE *file_handle) be_do_stat_nodes(irg, "04 Schedule"); /* we switch off optimizations here, because they might cause trouble */ - save_optimize = get_optimize(); - save_normalize = get_opt_normalize(); + save_optimization_state(&state); set_optimize(0); set_opt_normalize(0); @@ -445,9 +461,7 @@ static void be_main_loop(FILE *file_handle) be_do_stat_nodes(irg, "07 Final"); - /* reset the optimizations */ - set_optimize(save_optimize); - set_opt_normalize(save_normalize); + restore_optimization_state(&state); /* switched off due to statistics (statistic module needs all irgs) */ // free_ir_graph(irg);