some testcases I had lying around here
[cparser] / driver / firm_cmdline.c
index c3e34ff..2594908 100644 (file)
@@ -72,6 +72,8 @@ struct a_firm_opt firm_opt = {
   /* 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,
@@ -146,6 +148,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=<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" },
@@ -154,11 +158,11 @@ static const struct params {
   { 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" },
@@ -341,6 +345,14 @@ int firm_option(const char *opt)
     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);