From f2e24ef8ccdb2b02cb6597580a6ace029b5e1302 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Tue, 28 Oct 2008 15:54:18 +0000 Subject: [PATCH] - add option -end-melt [r23282] --- driver/firm_cmdline.c | 4 ++++ driver/firm_cmdline.h | 1 + driver/firm_opt.c | 3 +++ driver/firm_timing.def | 1 + 4 files changed, 9 insertions(+) diff --git a/driver/firm_cmdline.c b/driver/firm_cmdline.c index 2594908..d15e13f 100644 --- a/driver/firm_cmdline.c +++ b/driver/firm_cmdline.c @@ -58,6 +58,7 @@ struct a_firm_opt firm_opt = { /* deconv = */ FALSE, /* cc_opt = */ TRUE, /* bool_opt = */ FALSE, + /* end_melt = */ FALSE, /* freestanding; = */ FALSE, /* fp_model = */ fp_model_precise, /* lower_ll = */ FALSE, @@ -198,6 +199,8 @@ static const struct params { { X("no-opt-cc"), &firm_opt.cc_opt, 0, "firm: disable calling conventions optimization" }, { X("bool"), &firm_opt.bool_opt, 1, "firm: enable bool simplification optimization" }, { X("no-bool"), &firm_opt.bool_opt, 0, "firm: disable bool simplification optimization" }, + { X("end-melt"), &firm_opt.end_melt, 1, "firm: enable end block melting" }, + { X("no-end-melt"), &firm_opt.end_melt, 0, "firm: disable end block melting" }, { X("freestanding"), &firm_opt.freestanding, 1, "firm: freestanding environment" }, { X("hosted"), &firm_opt.freestanding, 0, "firm: hosted environment" }, @@ -323,6 +326,7 @@ static void disable_opts(void) { firm_opt.deconv = FALSE; firm_opt.cc_opt = FALSE; firm_opt.bool_opt = FALSE; + firm_opt.end_melt = FALSE; firm_opt.freestanding = TRUE; } /* disable_opts */ diff --git a/driver/firm_cmdline.h b/driver/firm_cmdline.h index ca676e3..7da2d8e 100644 --- a/driver/firm_cmdline.h +++ b/driver/firm_cmdline.h @@ -63,6 +63,7 @@ struct a_firm_opt { a_byte deconv; /**< enable conv node optimization */ a_byte cc_opt; /**< optimize calling conventions */ a_byte bool_opt; /**< perform bool simplification */ + a_byte end_melt; /**< end block melting */ a_byte freestanding; /**< if set, freestanding mode is enabled */ a_byte fp_model; /**< fp model */ a_byte lower_ll; /**< lower double word access */ diff --git a/driver/firm_opt.c b/driver/firm_opt.c index 50139c0..f7ef189 100644 --- a/driver/firm_opt.c +++ b/driver/firm_opt.c @@ -387,6 +387,7 @@ static opt_config_t opts[] = { { OPT_TARGET_IRG, "gvnpre", (func_ptr_t) do_gvn_pre, true, true, true, -1 }, { OPT_TARGET_IRG, "ifconv", (func_ptr_t) do_if_conv, true, true, true, TV_IF_CONV }, { OPT_TARGET_IRG, "bool", (func_ptr_t) opt_bool, true, true, true, -1 }, + { OPT_TARGET_IRG, "end-melt", (func_ptr_t) melt_end_blocks, true, true, true, TV_END_MELT }, { OPT_TARGET_IRG, "stred", (func_ptr_t) do_stred, true, true, true, TV_OSR }, { OPT_TARGET_IRG, "dead", (func_ptr_t) dead_node_elimination, true, false, true, TV_DEAD_NODE }, { OPT_TARGET_IRP, "inline", (func_ptr_t) do_inline, true, true, true, -1 }, @@ -505,6 +506,7 @@ static void do_firm_optimizations(const char *input_filename) set_opt_enabled("gvnpre", firm_opt.gvn_pre); set_opt_enabled("ifconv", firm_opt.if_conversion); set_opt_enabled("bool", firm_opt.bool_opt); + set_opt_enabled("end-melt", firm_opt.end_melt); set_opt_enabled("inline", firm_opt.do_inline); set_opt_enabled("clone", firm_opt.cloning); set_opt_enabled("combo", firm_opt.combo); @@ -574,6 +576,7 @@ static void do_firm_optimizations(const char *input_filename) } do_irg_opt(irg, "bool"); + do_irg_opt(irg, "end-melt"); do_irg_opt(irg, "stred"); do_irg_opt(irg, "local"); do_irg_opt(irg, "dead"); diff --git a/driver/firm_timing.def b/driver/firm_timing.def index afce33a..e43899d 100644 --- a/driver/firm_timing.def +++ b/driver/firm_timing.def @@ -29,6 +29,7 @@ DEFTIMEVAR(TV_REAL_FUNC_CALL , "realfunc", "Firm: real func call") DEFTIMEVAR(TV_CGANA , "cgana", "Firm: CG analysis") DEFTIMEVAR(TV_CONFIRM_CREATE , "confirm", "Firm: Confirm creation") DEFTIMEVAR(TV_SCALAR_REPLACE , "scalar", "Firm: scalar replace") +DEFTIMEVAR(TV_END_MELT , "end-melt", "Firm: melting end blocks") DEFTIMEVAR(TV_OPT , "other", "Firm: other opt") DEFTIMEVAR(TV_VERIFY , "verify", "Firm: verify pass") DEFTIMEVAR(TV_LOWER , "lower", "Firm: lowering") -- 2.20.1