*
* Compile when BACK_END_IS_CP_FIRM_BE is defined
*
- * (C) 2005 Michael Beck beck@ipd.info.uni-karlsruhe.de
+ * (C) 2005-2009 Michael Beck beck@ipd.info.uni-karlsruhe.de
*
* $Id$
*/
#include <libfirm/firm.h>
#include <libfirm/be.h>
-#ifdef _WIN32
+#if defined(_WIN32) || defined(__CYGWIN__)
#define DEFAULT_OS OS_SUPPORT_MINGW
#elif defined(__APPLE__)
#define DEFAULT_OS OS_SUPPORT_MACHO
/* alias_analysis = */ TRUE,
/* strict_alias = */ FALSE,
/* no_alias = */ FALSE,
- /* sync = */ FALSE,
+ /* sync = */ TRUE,
/* deconv = */ FALSE,
/* cc_opt = */ TRUE,
/* bool_opt = */ FALSE,
+ /* shape_blocks = */ FALSE,
/* freestanding; = */ FALSE,
/* fp_model = */ fp_model_precise,
/* lower_ll = */ 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,
{ 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=<size>"), NULL, 0, "firm: set maximum size for function inlining" },
+ { X("inline-threshold=<size>"),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" },
{ X("no-scalar-replace"), &firm_opt.scalar_replace, 0, "firm: disable scalar replacement" },
{ X("confirm"), &firm_opt.confirm, 1, "firm: enable Confirm optimization" },
{ X("no-confirm"), &firm_opt.confirm, 0, "firm: disable Confirm optimization" },
- { X("opt-mul"), &firm_opt.muls, 0, "firm: enable multiplication optimization" },
+ { X("opt-mul"), &firm_opt.muls, 1, "firm: enable multiplication optimization" },
{ X("no-opt-mul"), &firm_opt.muls, 0, "firm: disable multiplication optimization" },
- { X("opt-div"), &firm_opt.divs, 0, "firm: enable division optimization" },
+ { X("opt-div"), &firm_opt.divs, 1, "firm: enable division optimization" },
{ X("no-opt-div"), &firm_opt.divs, 0, "firm: disable division optimization" },
- { X("opt-mod"), &firm_opt.mods, 0, "firm: enable remainder optimization" },
+ { X("opt-mod"), &firm_opt.mods, 1, "firm: enable remainder optimization" },
{ X("no-opt-mod"), &firm_opt.mods, 0, "firm: disable remainder optimization" },
{ X("opt-fragile-ops"), &firm_opt.fragile_ops, 1, "firm: enable fragile ops optimization" },
{ X("no-opt-fragile-ops"), &firm_opt.fragile_ops, 0, "firm: disable fragile ops 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-blcoks"), &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" },
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 */
firm_opt.cloning = TRUE;
return 1;
}
+ else if (strncmp("inline-max-size=", opt, 16) == 0) {
+ sscanf(&opt[16], "%u", &firm_opt.inline_maxsize);
+ return 1;
+ }
+ else if (strncmp("inline-threshold=", opt, 17) == 0) {
+ sscanf(&opt[17], "%u", &firm_opt.inline_threshold);
+ return 1;
+ }
else if (strncmp("ycomp-host=", opt, 11) == 0) {
opt = &opt[11];
set_ycomp_host(opt);
#ifdef FIRM_BACKEND
return be_parse_arg(opt);
#else
+ (void)opt;
return 0;
#endif /* FIRM_BACKEND */
} /* firm_be_option */
-
-/**
- * prints the firm version number
- */
-void print_firm_version(FILE *f) {
- firm_version_t version;
-
- firm_get_version(&version);
-
- fprintf(f, "Firm C-Compiler using libFirm (%u.%u", version.major, version.minor);
- if (version.revision[0] != 0) {
- fputc(' ', f);
- fputs(version.revision, f);
- }
- if(version.build[0] != 0) {
- fputc(' ', f);
- fputs(version.build, f);
- }
- fprintf(f, "}\n"
- "(C) 2005-2008 Michael Beck\n"
- "(C) 1995-2008 University of Karlsruhe\n"
- "Using ");
-} /* print_firm_version */