X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=driver%2Ffirm_opt.c;h=defb7aa8d18ffddcd867200670d980c19ec1d328;hb=2fb66fd8bd2a5956ab2cad26978ccfb7e105d45f;hp=ada3dda15550c1ae6c46eb09fe52a63138759529;hpb=d80c4f36144467e678d933574ff7bf48cf1e2b71;p=cparser diff --git a/driver/firm_opt.c b/driver/firm_opt.c index ada3dda..defb7aa 100644 --- a/driver/firm_opt.c +++ b/driver/firm_opt.c @@ -756,12 +756,9 @@ void generate_code(FILE *out, const char *input_filename) { int i; - set_optimize(1); - set_opt_constant_folding(firm_opt.const_folding); - set_opt_algebraic_simplification(firm_opt.const_folding); - set_opt_cse(firm_opt.cse); - set_opt_global_cse(0); - + /* initialize implicit opts, just to be sure because really the frontend + * should have called it already before starting graph construction */ + init_implicit_optimizations(); init_statistics(); do_node_verification((firm_verification_t) firm_opt.verify); @@ -833,6 +830,7 @@ static void disable_all_opts(void) firm_opt.alias_analysis = false; firm_opt.strict_alias = false; firm_opt.no_alias = false; + firm_opt.const_folding = false; FOR_EACH_OPT(config) { if (config->flags & OPT_FLAG_ESSENTIAL) { @@ -965,3 +963,12 @@ void choose_optimization_pack(int level) break; } } + +void init_implicit_optimizations(void) +{ + set_optimize(1); + set_opt_constant_folding(firm_opt.const_folding); + set_opt_algebraic_simplification(firm_opt.const_folding); + set_opt_cse(firm_opt.cse); + set_opt_global_cse(0); +}