X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=driver%2Ffirm_cmdline.c;h=bb5ee952e7cdb0c4de117cdd056fbdb802d58ae9;hb=22d24ddd2209686fa723a62ccc19b7c2eea2d172;hp=ae2edfae390c759b27f7119af659f3ce4e74a1ec;hpb=cd8593c3e61c945dd27163965a95038211e1c01a;p=cparser diff --git a/driver/firm_cmdline.c b/driver/firm_cmdline.c index ae2edfa..bb5ee95 100644 --- a/driver/firm_cmdline.c +++ b/driver/firm_cmdline.c @@ -12,8 +12,10 @@ #include #include -#ifdef _WIN32 +#if defined(_WIN32) || defined(__CYGWIN__) #define DEFAULT_OS OS_SUPPORT_MINGW +#elif defined(__APPLE__) +#define DEFAULT_OS OS_SUPPORT_MACHO #else #define DEFAULT_OS OS_SUPPORT_LINUX #endif @@ -26,7 +28,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, @@ -43,20 +45,21 @@ struct a_firm_opt firm_opt = { /* mods = */ TRUE, /* fragile_ops = */ TRUE, /* load_store = */ TRUE, + /* load_store_pre = */ FALSE, /* modes = */ FALSE, /* precise_exc = */ FALSE, /* never needed for C */ /* use_DivMod = */ FALSE, /* remove_unused = */ TRUE, - /* jmp_tbls = */ TRUE, /* cloning = */ FALSE, - /* auto_sync = */ TRUE, + /* auto_sync = */ FALSE, /* alias_analysis = */ TRUE, /* strict_alias = */ FALSE, /* no_alias = */ FALSE, - /* luffig = */ FALSE, + /* sync = */ TRUE, /* deconv = */ FALSE, /* cc_opt = */ TRUE, /* bool_opt = */ FALSE, + /* shape_blocks = */ FALSE, /* freestanding; = */ FALSE, /* fp_model = */ fp_model_precise, /* lower_ll = */ FALSE, @@ -67,10 +70,9 @@ struct a_firm_opt firm_opt = { /* honor_restrict = */ TRUE, /* lower_bitfields = */ TRUE, /* pic = */ FALSE, - /* ycomp_dbg = */ FALSE, - /* ycomp_host = */ FIRM_YCOMP_DEFAULT_HOST, - /* ycomp_port = */ FIRM_YCOMP_DEFAULT_PORT, /* clone_threshold = */ DEFAULT_CLONE_THRESHOLD, + /* inline_maxsize = */ 750, + /* inline_threshold= */ 0, /* vrfy_edges = */ FALSE, /* grs_simd_opt = */ 0, /* grs_create_pattern = */ 0, @@ -145,6 +147,8 @@ static const struct params { { X("no-reassociation"), &firm_opt.reassoc, 0, "firm: disable reassociation" }, { X("inline"), &firm_opt.do_inline, 1, "firm: enable FIRM inlining" }, { X("no-inline"), &firm_opt.do_inline, 0, "firm: disable FIRM inlining" }, + { X("inline-max-size="), NULL, 0, "firm: set maximum size for function inlining" }, + { X("inline-threshold="),NULL, 0, "firm: set benefice threshold for function inlining" }, { X("tail-rec"), &firm_opt.tail_rec, 1, "firm: enable tail-recursion optimization" }, { X("no-tail-rec"), &firm_opt.tail_rec, 0, "firm: disable tail-recursion optimization" }, { X("strength-red"), &firm_opt.strength_red, 1, "firm: enable strength reduction for loops" }, @@ -163,10 +167,10 @@ static const struct params { { X("no-opt-fragile-ops"), &firm_opt.fragile_ops, 0, "firm: disable fragile ops optimization" }, { X("opt-load-store"), &firm_opt.load_store, 1, "firm: enable load store optimization" }, { X("no-opt-load-store"), &firm_opt.load_store, 0, "firm: disable load store optimization" }, + { X("opt-load-store-pre"), &firm_opt.load_store_pre, 1, "firm: enable load store optimization and PRE" }, + { X("no-opt-load-store-pre"), &firm_opt.load_store_pre, 0, "firm: disable load store optimization and PRE" }, { X("opt-modes"), &firm_opt.modes, 1, "firm: optimize integer modes" }, { X("no-opt-modes"), &firm_opt.modes, 0, "firm: disable integer modes optimization" }, - { X("jmptbls"), &firm_opt.jmp_tbls, 1, "firm: create jump table for switch" }, - { X("no-jmptbls"), &firm_opt.jmp_tbls, 0, "firm: do not create jump table for switch" }, { X("sync"), &firm_opt.auto_sync, 1, "firm: automatically create Sync nodes" }, { X("no-sync"), &firm_opt.auto_sync, 0, "firm: do not create Sync nodes" }, { X("opt-alias"), &firm_opt.alias_analysis, 1, "firm: enable alias analysis" }, @@ -187,14 +191,16 @@ static const struct params { { X("fp-precise"), &firm_opt.fp_model, fp_model_precise, "firm: precise fp model" }, { X("fp-fast"), &firm_opt.fp_model, fp_model_fast, "firm: fast fp model" }, { X("fp-strict"), &firm_opt.fp_model, fp_model_strict, "firm: strict fp model" }, - { X("luffig"), &firm_opt.luffig, 1, "firm: enable the fluffy load/store optimization" }, - { X("no-luffig"), &firm_opt.luffig, 0, "firm: disable the fluffy load/store optimization" }, + { X("sync"), &firm_opt.sync, 1, "firm: use Syncs to remove unnecesary memory dependencies" }, + { X("no-sync"), &firm_opt.sync, 0, "firm: do not use Syncs to remove unnecesary memory dependencies" }, { X("deconv"), &firm_opt.deconv, 1, "firm: enable the conv node optimization" }, { X("no-deconv"), &firm_opt.deconv, 0, "firm: disable the conv node optimization" }, { X("opt-cc"), &firm_opt.cc_opt, 1, "firm: enable calling conventions optimization" }, { 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("shape-blocks"), &firm_opt.shape_blocks, 1, "firm: enable block shaping" }, + { X("no-shape-blocks"), &firm_opt.shape_blocks, 0, "firm: disable block shaping" }, { X("freestanding"), &firm_opt.freestanding, 1, "firm: freestanding environment" }, { X("hosted"), &firm_opt.freestanding, 0, "firm: hosted environment" }, @@ -251,9 +257,6 @@ static const struct params { { X("win32"), &firm_opt.os_support, OS_SUPPORT_MINGW, "misc: generate MinGW Win32 code" }, { X("mac"), &firm_opt.os_support, OS_SUPPORT_MACHO, "misc: generate MacOS code" }, { X("linux"), &firm_opt.os_support, OS_SUPPORT_LINUX, "misc: generate Linux-ELF code" }, - { X("ycomp"), &firm_opt.ycomp_dbg, 1, "misc: enable yComp debugger extension" }, - { X("ycomp-host="), NULL, 0, "misc: yComp host" }, - { X("ycomp-port="), NULL, 0, "misc: yComp port" }, /* string options */ { X("dump-filter="), NULL, 0, "misc: set dumper filter" }, @@ -279,14 +282,6 @@ static void set_dump_filter(const char *filter) firm_dump.filter = StrDup(filter); } /* set_dump_filter */ -/** - * Set ycomp host - */ -static void set_ycomp_host(const char *host) -{ - firm_opt.ycomp_host = StrDup(host); -} /* set_ycomp_host */ - /** Disable all optimizations. */ static void disable_opts(void) { /* firm_opt.const_folding */ @@ -316,10 +311,11 @@ static void disable_opts(void) { firm_opt.alias_analysis = FALSE; firm_opt.strict_alias = FALSE; firm_opt.no_alias = FALSE; - firm_opt.luffig = FALSE; + firm_opt.sync = FALSE; firm_opt.deconv = FALSE; firm_opt.cc_opt = FALSE; firm_opt.bool_opt = FALSE; + firm_opt.shape_blocks = FALSE; firm_opt.freestanding = TRUE; } /* disable_opts */ @@ -342,13 +338,12 @@ int firm_option(const char *opt) firm_opt.cloning = TRUE; return 1; } - else if (strncmp("ycomp-host=", opt, 11) == 0) { - opt = &opt[11]; - set_ycomp_host(opt); + else if (strncmp("inline-max-size=", opt, 16) == 0) { + sscanf(&opt[16], "%u", &firm_opt.inline_maxsize); return 1; } - else if (strncmp("ycomp-port=", opt, 11) == 0) { - sscanf(&opt[11], "%d", &firm_opt.ycomp_port); + else if (strncmp("inline-threshold=", opt, 17) == 0) { + sscanf(&opt[17], "%u", &firm_opt.inline_threshold); return 1; } else if (strcmp("no-opt", opt) == 0) { @@ -407,18 +402,18 @@ int firm_be_option(const char *opt) { * prints the firm version number */ void print_firm_version(FILE *f) { - firm_version_t version; - - firm_get_version(&version); + const char *revision = ir_get_version_revision(); + const char *build = ir_get_version_build(); - fprintf(f, "Firm C-Compiler using libFirm (%u.%u", version.major, version.minor); - if (version.revision[0] != 0) { + fprintf(f, "Firm C-Compiler using libFirm (%u.%u", + ir_get_version_major(), ir_get_version_minor()); + if (revision[0] != 0) { fputc(' ', f); - fputs(version.revision, f); + fputs(revision, f); } - if(version.build[0] != 0) { + if(build[0] != 0) { fputc(' ', f); - fputs(version.build, f); + fputs(build, f); } fprintf(f, "}\n" "(C) 2005-2008 Michael Beck\n"