#include <libfirm/firm.h>
#include <libfirm/be.h>
-#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
-
/* optimization settings */
struct a_firm_opt firm_opt = {
/* enabled = */ TRUE,
/* debug_mode = */ DBG_MODE_NONE,
/* const_folding = */ TRUE,
/* cse = */ TRUE,
- /* control_flow = */ TRUE,
/* gcse = */ TRUE,
/* confirm = */ TRUE,
/* muls = */ TRUE,
/* strict_alias = */ FALSE,
/* no_alias = */ FALSE,
/* cc_opt = */ TRUE,
- /* freestanding; = */ FALSE,
/* fp_model = */ fp_model_precise,
- /* vrfy = */ FIRM_VERIFICATION_ON,
+ /* verify = */ FIRM_VERIFICATION_ON,
/* check_all = */ FALSE,
/* lower = */ TRUE,
- /* os_support = */ DEFAULT_OS,
/* honor_restrict = */ TRUE,
/* lower_bitfields = */ TRUE,
/* pic = */ FALSE,
/* clone_threshold = */ DEFAULT_CLONE_THRESHOLD,
/* inline_maxsize = */ 750,
/* inline_threshold= */ 0,
- /* vrfy_edges = */ FALSE,
+ /* verify_edges = */ FALSE,
/* grs_simd_opt = */ 0,
/* grs_create_pattern = */ 0,
- /* spare_size = */ 128,
/* enable_statev = */ FALSE,
/* statev_filter = */ "",
};
/* extbb = */ FALSE,
/* ir_graph = */ FALSE,
/* all_phases = */ FALSE,
- /* edge_labels = */ FALSE,
/* statistic = */ STAT_NONE,
/* stat_pattern = */ 0,
/* stat_dag = */ 0,
{ X("no-cse"), &firm_opt.cse, 0, "firm: disable common subexpression elimination" },
{ X("const-fold"), &firm_opt.const_folding, 1, "firm: enable constant folding" },
{ X("no-const-fold"), &firm_opt.const_folding, 0, "firm: disable constant folding" },
- { X("control_flow"), &firm_opt.control_flow, 1, "firm: enable control flow optimization" },
- { X("no-control-flow"), &firm_opt.control_flow, 0, "firm: disable control flow optimization" },
{ X("gcse"), &firm_opt.gcse, 1, "firm: enable global common subexpression elimination" },
{ X("no-gcse"), &firm_opt.gcse, 0, "firm: disable global common subexpression elimination" },
{ X("inline-max-size=<size>"), NULL, 0, "firm: set maximum size for function inlining" },
{ X("fp-strict"), &firm_opt.fp_model, fp_model_strict, "firm: strict fp model" },
{ 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("freestanding"), &firm_opt.freestanding, 1, "firm: freestanding environment" },
- { X("hosted"), &firm_opt.freestanding, 0, "firm: hosted environment" },
/* other firm regarding options */
{ X("restrict"), &firm_opt.honor_restrict, 1, "firm: honor restrict keyword" },
{ X("no-restrict"), &firm_opt.honor_restrict, 1, "firm: restrict keyword is meaningless" },
{ X("no-lower"), &firm_opt.lower, 0, "firm: disable lowering" },
- { X("vrfy-off"), &firm_opt.vrfy, FIRM_VERIFICATION_OFF, "firm: disable node verification" },
- { X("vrfy-on"), &firm_opt.vrfy, FIRM_VERIFICATION_ON, "firm: enable node verification" },
- { X("vrfy-report"), &firm_opt.vrfy, FIRM_VERIFICATION_REPORT, "firm: node verification, report only" },
+ { X("verify-off"), &firm_opt.verify, FIRM_VERIFICATION_OFF, "firm: disable node verification" },
+ { X("verify-on"), &firm_opt.verify, FIRM_VERIFICATION_ON, "firm: enable node verification" },
+ { X("verify-report"), &firm_opt.verify, FIRM_VERIFICATION_REPORT, "firm: node verification, report only" },
{ X("check-all"), &firm_opt.check_all, 1, "firm: enable checking all Firm phases" },
{ X("no-check-all"), &firm_opt.check_all, 0, "firm: disable checking all Firm phases" },
- { X("vrfy-edges-on"), &firm_opt.vrfy_edges, 1, "firm: enable out edge verification" },
- { X("vrfy-edges-off"), &firm_opt.vrfy_edges, 0, "firm: disable out edge verification" },
+ { X("verify-edges-on"), &firm_opt.verify_edges, 1, "firm: enable out edge verification" },
+ { X("verify-edges-off"), &firm_opt.verify_edges, 0, "firm: disable out edge verification" },
/* dumping */
#if defined(_DEBUG) || defined(FIRM_DEBUG)
{ X("dump-no-blocks"), &firm_dump.no_blocks, 1, "firm: dump non-blocked graph" },
{ X("dump-extbb"), &firm_dump.extbb, 1, "firm: dump extended basic blocks" },
{ X("dump-all-phases"), &firm_dump.all_phases, 1, "firm: dump graphs for all optimization phases" },
- { X("dump-edge-labels"), &firm_dump.edge_labels, 1, "firm: dump edge labels" },
/* code generation */
{ X("no-codegen"), &firm_be_opt.selection, BE_NONE, "cg: disable code generator" },
{ X("stat-final"), &firm_dump.statistic, STAT_FINAL, "misc: Firm statistic after code generation" },
{ X("stat-pattern"), &firm_dump.stat_pattern, 1, "misc: Firm statistic calculates most used pattern" },
{ X("stat-dag"), &firm_dump.stat_dag, 1, "misc: Firm calculates DAG statistics" },
- { 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" },
/* string options */
{ X("dump-filter=<string>"), NULL, 0, "misc: set dumper filter" },
firm_opt.strict_alias = FALSE;
firm_opt.no_alias = FALSE;
firm_opt.cc_opt = FALSE;
- firm_opt.freestanding = TRUE;
disable_all_opts();
} /* disable_opts */
/**
* prints the firm version number
*/
-void print_firm_version(FILE *f) {
- const char *revision = ir_get_version_revision();
- const char *build = ir_get_version_build();
+void print_firm_version(FILE *f)
+{
+ const char *revision = ir_get_version_revision();
+ const char *build = ir_get_version_build();
- fprintf(f, "Firm C-Compiler using libFirm (%u.%u",
- ir_get_version_major(), ir_get_version_minor());
- if (revision[0] != 0) {
- fputc(' ', f);
- fputs(revision, f);
- }
- if(build[0] != 0) {
- fputc(' ', f);
- fputs(build, f);
- }
- fprintf(f, "}\n"
- "(C) 2005-2008 Michael Beck\n"
- "(C) 1995-2008 University of Karlsruhe\n"
- "Using ");
+ fprintf(f, "Firm C-Compiler using libFirm (%u.%u",
+ ir_get_version_major(), ir_get_version_minor());
+ if (revision[0] != 0) {
+ fputc(' ', f);
+ fputs(revision, f);
+ }
+ if (build[0] != 0) {
+ fputc(' ', f);
+ fputs(build, f);
+ }
+ fprintf(f, "}\n"
+ "(C) 2005-2008 Michael Beck\n"
+ "(C) 1995-2008 University of Karlsruhe\n"
+ "Using ");
} /* print_firm_version */