From: Rama Malladi <rvmal...@amazon.com>

Signed-off-by: Rama Malladi <rvmal...@amazon.com>
---
gcc/common.opt      |  5 +++++
gcc/doc/invoke.texi | 18 +++++++++++++-----
gcc/opts.cc         | 17 ++++++++++++-----
3 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/gcc/common.opt b/gcc/common.opt
index f2bc47fdc5e..ce95175c1e4 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1961,6 +1961,11 @@ finline-functions-called-once
Common Var(flag_inline_functions_called_once) Optimization
Integrate functions only required by their single caller.

+finline-functions-aggressive
+Common Var(flag_inline_functions_aggressive) Init(0) Optimization
+Aggressively integrate functions not declared \"inline\" into their callers 
when profitable.
+This option selects the same inlining heuristics as \"-O3\".
+
finline-limit-
Common RejectNegative Joined Alias(finline-limit=)

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index c790e2f3518..7dc5c5ab433 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -570,8 +570,8 @@ Objective-C and Objective-C++ Dialects}.
-fgcse-sm  -fhoist-adjacent-loads  -fif-conversion
-fif-conversion2  -findirect-inlining
-finline-stringops[=@var{fn}]
--finline-functions  -finline-functions-called-once  -finline-limit=@var{n}
--finline-small-functions -fipa-modref -fipa-cp  -fipa-cp-clone
+-finline-functions  -finline-functions-aggressive  
-finline-functions-called-once
+-finline-limit=@var{n}  -finline-small-functions -fipa-modref -fipa-cp  
-fipa-cp-clone
-fipa-bit-cp  -fipa-vrp  -fipa-pta  -fipa-profile  -fipa-pure-const
-fipa-reference  -fipa-reference-addressable
-fipa-stack-alignment  -fipa-icf  -fira-algorithm=@var{algorithm}
@@ -12625,9 +12625,9 @@ designed to reduce code size.
Disregard strict standards compliance.  @option{-Ofast} enables all
@option{-O3} optimizations.  It also enables optimizations that are not
valid for all standard-compliant programs.
-It turns on @option{-ffast-math}, @option{-fallow-store-data-races}
-and the Fortran-specific @option{-fstack-arrays}, unless
-@option{-fmax-stack-var-size} is specified, and @option{-fno-protect-parens}.
+It turns on @option{-ffast-math}, @option{-finline-functions-aggressive},
+@option{-fallow-store-data-races} and the Fortran-specific 
@option{-fstack-arrays},
+unless @option{-fmax-stack-var-size} is specified, and 
@option{-fno-protect-parens}.
It turns off @option{-fsemantic-interposition}.

@opindex Og
@@ -12793,6 +12793,14 @@ assembler code in its own right.
Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.  Also enabled
by @option{-fprofile-use} and @option{-fauto-profile}.

+@opindex finline-functions-aggressive
+@item -finline-functions-aggressive
+Aggressively integrate functions not declared @code{inline} into their callers 
when
+profitable. This option selects the same inlining heuristics as @option{-O3}.
+
+Enabled at levels @option{-O3}, @option{-Ofast}, but not @option{-Og},
+@option{-O1}, @option{-O2}, @option{-Os}.
+
@opindex finline-functions-called-once
@item -finline-functions-called-once
Consider all @code{static} functions called once for inlining into their
diff --git a/gcc/opts.cc b/gcc/opts.cc
index 1b1b46455af..729f2831e67 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -700,11 +700,7 @@ static const struct default_options 
default_options_table[] =
     { 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 },
-    { OPT_LEVELS_3_PLUS, OPT__param_early_inlining_insns_, NULL, 14 },
-    { OPT_LEVELS_3_PLUS, OPT__param_inline_heuristics_hint_percent_, NULL, 600 
},
-    { OPT_LEVELS_3_PLUS, OPT__param_inline_min_speedup_, NULL, 15 },
-    { OPT_LEVELS_3_PLUS, OPT__param_max_inline_insns_single_, NULL, 200 },
+    { OPT_LEVELS_3_PLUS, OPT_finline_functions_aggressive, NULL, 1 },

     /* -Ofast adds optimizations to -O3.  */
     { OPT_LEVELS_FAST, OPT_ffast_math, NULL, 1 },
@@ -3037,6 +3033,17 @@ common_handle_option (struct gcc_options *opts,
                           value / 2);
       break;

+    case OPT_finline_functions_aggressive:
+      if(opts->x_flag_inline_functions_aggressive)
+       {
+         opts->x_param_max_inline_insns_auto = 30;
+         opts->x_param_early_inlining_insns = 14;
+         opts->x_param_inline_heuristics_hint_percent = 600;
+         opts->x_param_inline_min_speedup = 15;
+         opts->x_param_max_inline_insns_single = 200;
+       }
+      break;
+
     case OPT_finstrument_functions_exclude_function_list_:
       add_comma_separated_to_vector
        (&opts->x_flag_instrument_functions_exclude_functions, arg);
--
2.45.1

Reply via email to