Add Optimization keyword for param_max_inline_insns_auto param.
authorMartin Liska <mliska@suse.cz>
Thu, 14 Nov 2019 12:08:57 +0000 (13:08 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 14 Nov 2019 12:08:57 +0000 (12:08 +0000)
2019-11-14  Martin Liska  <mliska@suse.cz>

* ipa-cp.c (devirtualization_time_bonus): Use opt_for_fn
of a callee to get value of the param.
* ipa-inline.c (inline_insns_auto): Use proper
opt_for_fn.
* opts.c (maybe_default_option): Do not overwrite param
value if optimization level does not match.  Note that
params usually have default value set via Init() keyword.
* params.opt: Remove -param=max-inline-insns-auto-O2.
* cif-code.def (MAX_INLINE_INSNS_AUTO_O2_LIMIT): Remove.
* doc/invoke.texi: Remove documentation of
max-inline-insns-auto-O2.
2019-11-14  Martin Liska  <mliska@suse.cz>

* c-c++-common/asan/memcmp-1.c: Update expected backtrace.

From-SVN: r278218

gcc/ChangeLog
gcc/cif-code.def
gcc/doc/invoke.texi
gcc/ipa-cp.c
gcc/ipa-inline.c
gcc/opts.c
gcc/params.opt
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/asan/memcmp-1.c

index 6b77d87a97d038b24dce8b15c87a111cb05a8b64..7af5644024b69ee666f0457bf15034a1491acb36 100644 (file)
@@ -1,3 +1,17 @@
+2019-11-14  Martin Liska  <mliska@suse.cz>
+
+       * ipa-cp.c (devirtualization_time_bonus): Use opt_for_fn
+       of a callee to get value of the param.
+       * ipa-inline.c (inline_insns_auto): Use proper
+       opt_for_fn.
+       * opts.c (maybe_default_option): Do not overwrite param
+       value if optimization level does not match.  Note that
+       params usually have default value set via Init() keyword.
+       * params.opt: Remove -param=max-inline-insns-auto-O2.
+       * cif-code.def (MAX_INLINE_INSNS_AUTO_O2_LIMIT): Remove.
+       * doc/invoke.texi: Remove documentation of
+       max-inline-insns-auto-O2.
+
 2019-11-14  Martin Liska  <mliska@suse.cz>
 
        * tree-switch-conversion.c (switch_conversion::switch_conversion):
index a154f24f13d61fa6fa318c6d8d584efcea3853a6..b4403c962475a7bbcfc304027cfb007b95f0adc6 100644 (file)
@@ -74,8 +74,6 @@ DEFCIFCODE(MAX_INLINE_INSNS_SINGLE_O2_LIMIT, CIF_FINAL_NORMAL,
           N_("--param max-inline-insns-single-O2 limit reached"))
 DEFCIFCODE(MAX_INLINE_INSNS_AUTO_LIMIT, CIF_FINAL_NORMAL,
           N_("--param max-inline-insns-auto limit reached"))
-DEFCIFCODE(MAX_INLINE_INSNS_AUTO_O2_LIMIT, CIF_FINAL_NORMAL,
-          N_("--param max-inline-insns-auto-O2 limit reached"))
 DEFCIFCODE(INLINE_UNIT_GROWTH_LIMIT, CIF_FINAL_NORMAL,
           N_("--param inline-unit-growth limit reached"))
 
index 69f057e7a12599af0d71a28b42023c04c228baf1..fe79ca2247aef11a4187aed7ba3ccc624baf3e2b 100644 (file)
@@ -11283,16 +11283,11 @@ applied. In other cases @option{max-inline-insns-single-O2} is applied.
 
 
 @item max-inline-insns-auto
-@item max-inline-insns-auto-O2
 When you use @option{-finline-functions} (included in @option{-O3}),
 a lot of functions that would otherwise not be considered for inlining
 by the compiler are investigated.  To those functions, a different
 (more restrictive) limit compared to functions declared inline can
-be applied.
-
-For functions compiled with optimization levels
-@option{-O3} and @option{-Ofast} parameter @option{max-inline-insns-auto} is
-applied. In other cases @option{max-inline-insns-auto-O2} is applied.
+be applied (@option{--param max-inline-insns-auto}).
 
 @item max-inline-insns-small
 This is bound applied to calls which are considered relevant with
@@ -11313,8 +11308,8 @@ execute function prologue and epilogue
 @item inline-heuristics-hint-percent
 @item inline-heuristics-hint-percent-O2
 The scale (in percents) applied to @option{inline-insns-single},
-@option{inline-insns-single-O2}, @option{inline-insns-auto},
-@option{inline-insns-auto-O2} when inline heuristics hints that inlining is
+@option{inline-insns-single-O2}, @option{inline-insns-auto}
+when inline heuristics hints that inlining is
 very profitable (will enable later optimizations).
 
 For functions compiled with optimization levels
index f0d354b3704cbde3286ee0ab3d8cbeed2fc7b4e8..86c625355b6f389feb8e68ef342d1663cd0e32f3 100644 (file)
@@ -2936,11 +2936,13 @@ devirtualization_time_bonus (struct cgraph_node *node,
       int size = ipa_size_summaries->get (callee)->size;
       /* FIXME: The values below need re-considering and perhaps also
         integrating into the cost metrics, at lest in some very basic way.  */
-      if (size <= param_max_inline_insns_auto / 4)
+      int max_inline_insns_auto
+       = opt_for_fn (callee->decl, param_max_inline_insns_auto);
+      if (size <= max_inline_insns_auto / 4)
        res += 31 / ((int)speculative + 1);
-      else if (size <= param_max_inline_insns_auto / 2)
+      else if (size <= max_inline_insns_auto / 2)
        res += 15 / ((int)speculative + 1);
-      else if (size <= param_max_inline_insns_auto
+      else if (size <= max_inline_insns_auto
               || DECL_DECLARED_INLINE_P (callee->decl))
        res += 7 / ((int)speculative + 1);
     }
index 78ec0ec685fab31c66c358b6e4af5b2130469fb6..effb59784a379a29ff4cd36cba2066b312e48469 100644 (file)
@@ -417,20 +417,10 @@ inline_insns_single (cgraph_node *n, bool hint)
 static int
 inline_insns_auto (cgraph_node *n, bool hint)
 {
-  if (opt_for_fn (n->decl, optimize) >= 3)
-    {
-      if (hint)
-       return param_max_inline_insns_auto
-              * param_inline_heuristics_hint_percent / 100;
-      return param_max_inline_insns_auto;
-    }
-  else
-    {
-      if (hint)
-       return param_max_inline_insns_auto_o2
-              * param_inline_heuristics_hint_percent_o2 / 100;
-      return param_max_inline_insns_auto_o2;
-    }
+  int max_inline_insns_auto = opt_for_fn (n->decl, param_max_inline_insns_auto);
+  if (hint)
+    return max_inline_insns_auto * param_inline_heuristics_hint_percent / 100;
+  return max_inline_insns_auto;
 }
 
 /* Decide if we can inline the edge and possibly update
index 74f05f1b58d5bb67e2d9e2e60d91b3b24719d932..addebf1536556be58fae3d7aac51f4aa60ac8902 100644 (file)
@@ -388,7 +388,8 @@ maybe_default_option (struct gcc_options *opts,
                             lang_mask, DK_UNSPECIFIED, loc,
                             handlers, true, dc);
   else if (default_opt->arg == NULL
-          && !option->cl_reject_negative)
+          && !option->cl_reject_negative
+          && !(option->flags & CL_PARAMS))
     handle_generated_option (opts, opts_set, default_opt->opt_index,
                             default_opt->arg, !default_opt->value,
                             lang_mask, DK_UNSPECIFIED, loc,
@@ -541,6 +542,9 @@ static const struct default_options default_options_table[] =
     { OPT_LEVELS_3_PLUS, OPT_fvect_cost_model_, NULL, VECT_COST_MODEL_DYNAMIC },
     { OPT_LEVELS_3_PLUS, OPT_fversion_loops_for_strides, NULL, 1 },
 
+    /* -O3 parameters.  */
+    { OPT_LEVELS_3_PLUS, OPT__param_max_inline_insns_auto_, NULL, 30 },
+
     /* -Ofast adds optimizations to -O3.  */
     { OPT_LEVELS_FAST, OPT_ffast_math, NULL, 1 },
     { OPT_LEVELS_FAST, OPT_fallow_store_data_races, NULL, 1 },
index be0a3a15598356e52d567dcf56eb499610d2327c..d8a10b8be4a91de73fe10675b7d2c3ce1061999c 100644 (file)
@@ -467,11 +467,7 @@ Common Joined UInteger Var(param_max_hoist_depth) Init(30) Param
 Maximum depth of search in the dominator tree for expressions to hoist.
 
 -param=max-inline-insns-auto=
-Common Joined UInteger Var(param_max_inline_insns_auto) Init(30) Param
-The maximum number of instructions when automatically inlining with -O3 and -Ofast.
-
--param=max-inline-insns-auto-O2=
-Common Joined UInteger Var(param_max_inline_insns_auto_o2) Init(15) Param
+Common Joined UInteger Var(param_max_inline_insns_auto) Init(15) Optimization Param
 The maximum number of instructions when automatically inlining.
 
 -param=max-inline-insns-recursive=
index 19aaa423bfc26b72374930b2a83b30156218ba16..914f00593ff8fd41848ca40d2b87000ef5bf3b83 100644 (file)
@@ -1,3 +1,7 @@
+2019-11-14  Martin Liska  <mliska@suse.cz>
+
+       * c-c++-common/asan/memcmp-1.c: Update expected backtrace.
+
 2019-11-14  Jakub Jelinek  <jakub@redhat.com>
 
        * c-c++-common/gomp/declare-variant-11.c: Add "sse4.2" and "sse4.1"
index 0a513c05ee1c21cb818e938c841c4f6a815a7aac..0403ad78945d42fb3273bdc8616c25dfdf21109a 100644 (file)
@@ -16,5 +16,5 @@ main ()
 }
 
 /* { dg-output "ERROR: AddressSanitizer: stack-buffer-overflow.*(\n|\r\n|\r)" } */
-/* { dg-output "    #1 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)memcmp|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
-/* { dg-output "    #2 0x\[0-9a-f\]+ +(in _*main|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output "    #\[1-9\] 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)memcmp|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
+/* { dg-output "    #\[2-9\] 0x\[0-9a-f\]+ +(in _*main|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */