From: Michael Beck Date: Thu, 21 Aug 2008 23:01:25 +0000 (+0000) Subject: synchronized with edgcpfe: enabled combo by default X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=4108d31ed34aee3c0841ae01b844420da8a3cdf1;p=cparser synchronized with edgcpfe: enabled combo by default [r21335] --- diff --git a/driver/firm_cmdline.c b/driver/firm_cmdline.c index ae2edfa..3c07e21 100644 --- a/driver/firm_cmdline.c +++ b/driver/firm_cmdline.c @@ -26,7 +26,7 @@ struct a_firm_opt firm_opt = { /* reassoc = */ TRUE, /* cse = */ TRUE, /* control_flow = */ TRUE, - /* combo; = */ FALSE, + /* combo = */ TRUE, /* gcse = */ TRUE, /* gvn_pre = */ FALSE, /* cond_eval = */ FALSE, diff --git a/driver/firm_opt.c b/driver/firm_opt.c index 4af2f7d..004ef32 100644 --- a/driver/firm_opt.c +++ b/driver/firm_opt.c @@ -511,15 +511,18 @@ static void do_firm_optimizations(const char *input_filename) do_irp_opt("rts"); - for (i = 0; i < get_irp_n_irgs(); i++) { - ir_graph *irg = get_irp_irg(i); - do_irg_opt(irg, "combo"); - do_irg_opt(irg, "local"); - - /* Confirm construction currently can only handle blocks with only one control - flow predecessor. Calling optimize_cf here removes Bad predecessors and help - the optimization of switch constructs. */ - do_irg_opt(irg, "controlflow"); + /* first step: kill dead code */ + if (firm_opt.combo) { + for (i = 0; i < get_irp_n_irgs(); i++) { + ir_graph *irg = get_irp_irg(i); + do_irg_opt(irg, "combo"); + } + } else { + for (i = 0; i < get_irp_n_irgs(); i++) { + ir_graph *irg = get_irp_irg(i); + do_irg_opt(irg, "local"); + do_irg_opt(irg, "controlflow"); + } } do_irp_opt("gc_irgs"); @@ -531,16 +534,16 @@ static void do_firm_optimizations(const char *input_filename) ir_graph *irg = get_irp_irg(i); #ifdef FIRM_EXT_GRS - /* If SIMD optimization is on, make sure we have only 1 return */ - if (firm_ext_grs.create_pattern || firm_ext_grs.simd_opt) - do_irg_opt("onereturn"); + /* If SIMD optimization is on, make sure we have only 1 return */ + if (firm_ext_grs.create_pattern || firm_ext_grs.simd_opt) + do_irg_opt("onereturn"); #endif - do_irg_opt(irg, "scalar"); - do_irg_opt(irg, "local"); - do_irg_opt(irg, "reassoc"); - do_irg_opt(irg, "local"); - do_irg_opt(irg, "gcse"); + do_irg_opt(irg, "scalar"); + do_irg_opt(irg, "local"); + do_irg_opt(irg, "reassoc"); + do_irg_opt(irg, "local"); + do_irg_opt(irg, "gcse"); if (firm_opt.confirm) { /* Confirm construction currently can only handle blocks with only one control @@ -561,7 +564,7 @@ static void do_firm_optimizations(const char *input_filename) do_irg_opt(irg, "remove_confirms"); do_irg_opt(irg, "gvnpre"); do_irg_opt(irg, "place"); - do_irg_opt(irg, "controlflow"); + do_irg_opt(irg, "controlflow"); if (firm_opt.if_conversion) { do_irg_opt(irg, "ifconv");