* [PATCH] Add flag to control straight-line strength reduction
@ 2012-07-17 15:46 William J. Schmidt
2012-07-18 7:59 ` Richard Guenther
0 siblings, 1 reply; 11+ messages in thread
From: William J. Schmidt @ 2012-07-17 15:46 UTC (permalink / raw)
To: gcc-patches; +Cc: bergner, rguenther
I overlooked adding a pass-control flag for strength reduction, added
here. I named it -ftree-slsr for consistency with other -ftree- flags,
but could change it to -fgimple-slsr if you prefer that for a pass named
gimple-ssa-...
Bootstrapped and tested on powerpc-unknown-linux-gnu with no new
regressions. Ok for trunk?
Thanks,
Bill
2012-07-17 Bill Schmidt <wschmidt@linux.ibm.com>
* opts.c (default_option): Make -ftree-slsr default at -O1 and above.
* gimple-ssa-strength-reduction.c (gate_strength_reduction): Use
flag_tree_slsr.
* common.opt: Add -ftree-slsr with flag_tree_slsr.
Index: gcc/opts.c
===================================================================
--- gcc/opts.c (revision 189574)
+++ gcc/opts.c (working copy)
@@ -452,6 +452,7 @@ static const struct default_options default_option
{ OPT_LEVELS_1_PLUS, OPT_ftree_ch, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcombine_stack_adjustments, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcompare_elim, NULL, 1 },
+ { OPT_LEVELS_1_PLUS, OPT_ftree_slsr, NULL, 1 },
/* -O2 optimizations. */
{ OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 },
Index: gcc/gimple-ssa-strength-reduction.c
===================================================================
--- gcc/gimple-ssa-strength-reduction.c (revision 189574)
+++ gcc/gimple-ssa-strength-reduction.c (working copy)
@@ -1501,7 +1501,7 @@ execute_strength_reduction (void)
static bool
gate_strength_reduction (void)
{
- return optimize > 0;
+ return flag_tree_slsr;
}
struct gimple_opt_pass pass_strength_reduction =
Index: gcc/common.opt
===================================================================
--- gcc/common.opt (revision 189574)
+++ gcc/common.opt (working copy)
@@ -2080,6 +2080,10 @@ ftree-sink
Common Report Var(flag_tree_sink) Optimization
Enable SSA code sinking on trees
+ftree-slsr
+Common Report Var(flag_tree_slsr) Optimization
+Perform straight-line strength reduction
+
ftree-sra
Common Report Var(flag_tree_sra) Optimization
Perform scalar replacement of aggregates
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-17 15:46 [PATCH] Add flag to control straight-line strength reduction William J. Schmidt
@ 2012-07-18 7:59 ` Richard Guenther
2012-07-18 8:11 ` Steven Bosscher
0 siblings, 1 reply; 11+ messages in thread
From: Richard Guenther @ 2012-07-18 7:59 UTC (permalink / raw)
To: William J. Schmidt; +Cc: gcc-patches, bergner
On Tue, 17 Jul 2012, William J. Schmidt wrote:
> I overlooked adding a pass-control flag for strength reduction, added
> here. I named it -ftree-slsr for consistency with other -ftree- flags,
> but could change it to -fgimple-slsr if you prefer that for a pass named
> gimple-ssa-...
>
> Bootstrapped and tested on powerpc-unknown-linux-gnu with no new
> regressions. Ok for trunk?
The switch needs documentation in doc/invoke.texi. Other than that
it's fine to stick with -ftree-..., even that exposes details to our
users that are not necessary (RTL passes didn't have -frtl-... either).
So in the end, why not re-use -fstrength-reduce that is already available
(but stubbed out)?
Comments from other folks?
Thanks,
Richard.
> Thanks,
> Bill
>
>
> 2012-07-17 Bill Schmidt <wschmidt@linux.ibm.com>
>
> * opts.c (default_option): Make -ftree-slsr default at -O1 and above.
> * gimple-ssa-strength-reduction.c (gate_strength_reduction): Use
> flag_tree_slsr.
> * common.opt: Add -ftree-slsr with flag_tree_slsr.
>
>
> Index: gcc/opts.c
> ===================================================================
> --- gcc/opts.c (revision 189574)
> +++ gcc/opts.c (working copy)
> @@ -452,6 +452,7 @@ static const struct default_options default_option
> { OPT_LEVELS_1_PLUS, OPT_ftree_ch, NULL, 1 },
> { OPT_LEVELS_1_PLUS, OPT_fcombine_stack_adjustments, NULL, 1 },
> { OPT_LEVELS_1_PLUS, OPT_fcompare_elim, NULL, 1 },
> + { OPT_LEVELS_1_PLUS, OPT_ftree_slsr, NULL, 1 },
>
> /* -O2 optimizations. */
> { OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 },
> Index: gcc/gimple-ssa-strength-reduction.c
> ===================================================================
> --- gcc/gimple-ssa-strength-reduction.c (revision 189574)
> +++ gcc/gimple-ssa-strength-reduction.c (working copy)
> @@ -1501,7 +1501,7 @@ execute_strength_reduction (void)
> static bool
> gate_strength_reduction (void)
> {
> - return optimize > 0;
> + return flag_tree_slsr;
> }
>
> struct gimple_opt_pass pass_strength_reduction =
> Index: gcc/common.opt
> ===================================================================
> --- gcc/common.opt (revision 189574)
> +++ gcc/common.opt (working copy)
> @@ -2080,6 +2080,10 @@ ftree-sink
> Common Report Var(flag_tree_sink) Optimization
> Enable SSA code sinking on trees
>
> +ftree-slsr
> +Common Report Var(flag_tree_slsr) Optimization
> +Perform straight-line strength reduction
> +
> ftree-sra
> Common Report Var(flag_tree_sra) Optimization
> Perform scalar replacement of aggregates
>
>
>
--
Richard Guenther <rguenther@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 7:59 ` Richard Guenther
@ 2012-07-18 8:11 ` Steven Bosscher
2012-07-18 9:01 ` Richard Guenther
2012-07-18 9:02 ` Eric Botcazou
0 siblings, 2 replies; 11+ messages in thread
From: Steven Bosscher @ 2012-07-18 8:11 UTC (permalink / raw)
To: Richard Guenther; +Cc: William J. Schmidt, gcc-patches, bergner
On Wed, Jul 18, 2012 at 9:59 AM, Richard Guenther <rguenther@suse.de> wrote:
> On Tue, 17 Jul 2012, William J. Schmidt wrote:
>
>> I overlooked adding a pass-control flag for strength reduction, added
>> here. I named it -ftree-slsr for consistency with other -ftree- flags,
>> but could change it to -fgimple-slsr if you prefer that for a pass named
>> gimple-ssa-...
>>
>> Bootstrapped and tested on powerpc-unknown-linux-gnu with no new
>> regressions. Ok for trunk?
>
> The switch needs documentation in doc/invoke.texi. Other than that
> it's fine to stick with -ftree-..., even that exposes details to our
> users that are not necessary (RTL passes didn't have -frtl-... either).
> So in the end, why not re-use -fstrength-reduce that is already available
> (but stubbed out)?
In the past, -fstrength-reduce applied to loop strength reduction in
loop.c. I don't think it should be re-used for a completely different
code transformation.
Ciao!
Steven
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 8:11 ` Steven Bosscher
@ 2012-07-18 9:01 ` Richard Guenther
2012-07-18 13:25 ` William J. Schmidt
2012-07-18 14:00 ` William J. Schmidt
2012-07-18 9:02 ` Eric Botcazou
1 sibling, 2 replies; 11+ messages in thread
From: Richard Guenther @ 2012-07-18 9:01 UTC (permalink / raw)
To: Steven Bosscher; +Cc: William J. Schmidt, gcc-patches, bergner
On Wed, 18 Jul 2012, Steven Bosscher wrote:
> On Wed, Jul 18, 2012 at 9:59 AM, Richard Guenther <rguenther@suse.de> wrote:
> > On Tue, 17 Jul 2012, William J. Schmidt wrote:
> >
> >> I overlooked adding a pass-control flag for strength reduction, added
> >> here. I named it -ftree-slsr for consistency with other -ftree- flags,
> >> but could change it to -fgimple-slsr if you prefer that for a pass named
> >> gimple-ssa-...
> >>
> >> Bootstrapped and tested on powerpc-unknown-linux-gnu with no new
> >> regressions. Ok for trunk?
> >
> > The switch needs documentation in doc/invoke.texi. Other than that
> > it's fine to stick with -ftree-..., even that exposes details to our
> > users that are not necessary (RTL passes didn't have -frtl-... either).
> > So in the end, why not re-use -fstrength-reduce that is already available
> > (but stubbed out)?
>
> In the past, -fstrength-reduce applied to loop strength reduction in
> loop.c. I don't think it should be re-used for a completely different
> code transformation.
Ok. I suppose -ftree-slsr is ok then.
Thanks,
Richard.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 8:11 ` Steven Bosscher
2012-07-18 9:01 ` Richard Guenther
@ 2012-07-18 9:02 ` Eric Botcazou
1 sibling, 0 replies; 11+ messages in thread
From: Eric Botcazou @ 2012-07-18 9:02 UTC (permalink / raw)
To: Steven Bosscher
Cc: gcc-patches, Richard Guenther, William J. Schmidt, bergner
> In the past, -fstrength-reduce applied to loop strength reduction in
> loop.c. I don't think it should be re-used for a completely different
> code transformation.
Seconded.
--
Eric Botcazou
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 9:01 ` Richard Guenther
@ 2012-07-18 13:25 ` William J. Schmidt
2012-07-18 13:29 ` William J. Schmidt
2012-07-18 14:15 ` Steven Bosscher
2012-07-18 14:00 ` William J. Schmidt
1 sibling, 2 replies; 11+ messages in thread
From: William J. Schmidt @ 2012-07-18 13:25 UTC (permalink / raw)
To: Richard Guenther; +Cc: Steven Bosscher, gcc-patches, bergner
On Wed, 2012-07-18 at 11:01 +0200, Richard Guenther wrote:
> On Wed, 18 Jul 2012, Steven Bosscher wrote:
>
> > On Wed, Jul 18, 2012 at 9:59 AM, Richard Guenther <rguenther@suse.de> wrote:
> > > On Tue, 17 Jul 2012, William J. Schmidt wrote:
> > >
> > >> I overlooked adding a pass-control flag for strength reduction, added
> > >> here. I named it -ftree-slsr for consistency with other -ftree- flags,
> > >> but could change it to -fgimple-slsr if you prefer that for a pass named
> > >> gimple-ssa-...
> > >>
> > >> Bootstrapped and tested on powerpc-unknown-linux-gnu with no new
> > >> regressions. Ok for trunk?
> > >
> > > The switch needs documentation in doc/invoke.texi. Other than that
> > > it's fine to stick with -ftree-..., even that exposes details to our
> > > users that are not necessary (RTL passes didn't have -frtl-... either).
> > > So in the end, why not re-use -fstrength-reduce that is already available
> > > (but stubbed out)?
> >
> > In the past, -fstrength-reduce applied to loop strength reduction in
> > loop.c. I don't think it should be re-used for a completely different
> > code transformation.
>
> Ok. I suppose -ftree-slsr is ok then.
It turns out I was looking at a very old copy of the manual, and the
-ftree... stuff is not as prevalent now as it once was. I'll just go
with -fslsr to be consistent with -fgcse, -fipa-sra, etc.
Thanks for the pointer to doc/invoke.texi -- it appears I also failed to
document -fhoist-adjacent-loads, so I will go ahead and do that as well.
Thanks!
Bill
>
> Thanks,
> Richard.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 13:25 ` William J. Schmidt
@ 2012-07-18 13:29 ` William J. Schmidt
2012-07-18 14:15 ` Steven Bosscher
1 sibling, 0 replies; 11+ messages in thread
From: William J. Schmidt @ 2012-07-18 13:29 UTC (permalink / raw)
To: Richard Guenther; +Cc: Steven Bosscher, gcc-patches, bergner
On Wed, 2012-07-18 at 08:24 -0500, William J. Schmidt wrote:
> On Wed, 2012-07-18 at 11:01 +0200, Richard Guenther wrote:
> > On Wed, 18 Jul 2012, Steven Bosscher wrote:
> >
> > > On Wed, Jul 18, 2012 at 9:59 AM, Richard Guenther <rguenther@suse.de> wrote:
> > > > On Tue, 17 Jul 2012, William J. Schmidt wrote:
> > > >
> > > >> I overlooked adding a pass-control flag for strength reduction, added
> > > >> here. I named it -ftree-slsr for consistency with other -ftree- flags,
> > > >> but could change it to -fgimple-slsr if you prefer that for a pass named
> > > >> gimple-ssa-...
> > > >>
> > > >> Bootstrapped and tested on powerpc-unknown-linux-gnu with no new
> > > >> regressions. Ok for trunk?
> > > >
> > > > The switch needs documentation in doc/invoke.texi. Other than that
> > > > it's fine to stick with -ftree-..., even that exposes details to our
> > > > users that are not necessary (RTL passes didn't have -frtl-... either).
> > > > So in the end, why not re-use -fstrength-reduce that is already available
> > > > (but stubbed out)?
> > >
> > > In the past, -fstrength-reduce applied to loop strength reduction in
> > > loop.c. I don't think it should be re-used for a completely different
> > > code transformation.
> >
> > Ok. I suppose -ftree-slsr is ok then.
>
> It turns out I was looking at a very old copy of the manual, and the
> -ftree... stuff is not as prevalent now as it once was. I'll just go
> with -fslsr to be consistent with -fgcse, -fipa-sra, etc.
Well, posted too fast. Paging down I see that isn't true, sorry. I'll
use the tree- for consistency even though it is useless information.
Thanks,
Bill
>
> Thanks for the pointer to doc/invoke.texi -- it appears I also failed to
> document -fhoist-adjacent-loads, so I will go ahead and do that as well.
>
> Thanks!
> Bill
>
> >
> > Thanks,
> > Richard.
> >
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 9:01 ` Richard Guenther
2012-07-18 13:25 ` William J. Schmidt
@ 2012-07-18 14:00 ` William J. Schmidt
2012-07-18 14:35 ` Richard Guenther
1 sibling, 1 reply; 11+ messages in thread
From: William J. Schmidt @ 2012-07-18 14:00 UTC (permalink / raw)
To: Richard Guenther; +Cc: Steven Bosscher, gcc-patches, bergner
Here's the patch with documentation changes included. I also cleaned up
missing work from a couple of my previous patches, so
-fhoist-adjacent-loads is documented now, and -fvect-cost-model is added
to the list of options on by default at -O3.
Ok for trunk?
Thanks,
Bill
2012-07-18 Bill Schmidt <wschmidt@linux.ibm.com>
* doc/invoke.texi: Add -fhoist-adjacent-loads and -ftree-slsr to list
of flags controlling optimization; add -ftree-slsr to list of flags
enabled by default at -O; add -fhoist-adjacent-loads to list of flags
enabled by default at -O2; add -fvect-cost-model to list of flags
enabled by default at -O3; document -fhoist-adjacent-loads and
-ftree-slsr.
* opts.c (default_option): Make -ftree-slsr default at -O1 and above.
* gimple-ssa-strength-reduction.c (gate_strength_reduction): Use
flag_tree_slsr.
* common.opt: Add -ftree-slsr with flag_tree_slsr.
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi (revision 189574)
+++ gcc/doc/invoke.texi (working copy)
@@ -364,7 +364,8 @@ Objective-C and Objective-C++ Dialects}.
-ffast-math -ffinite-math-only -ffloat-store -fexcess-precision=@var{style} @gol
-fforward-propagate -ffp-contract=@var{style} -ffunction-sections @gol
-fgcse -fgcse-after-reload -fgcse-las -fgcse-lm -fgraphite-identity @gol
--fgcse-sm -fif-conversion -fif-conversion2 -findirect-inlining @gol
+-fgcse-sm -fhoist-adjacent-loads -fif-conversion @gol
+-fif-conversion2 -findirect-inlining @gol
-finline-functions -finline-functions-called-once -finline-limit=@var{n} @gol
-finline-small-functions -fipa-cp -fipa-cp-clone -fipa-matrix-reorg @gol
-fipa-pta -fipa-profile -fipa-pure-const -fipa-reference @gol
@@ -413,8 +414,8 @@ Objective-C and Objective-C++ Dialects}.
-ftree-phiprop -ftree-loop-distribution -ftree-loop-distribute-patterns @gol
-ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize @gol
-ftree-parallelize-loops=@var{n} -ftree-pre -ftree-partial-pre -ftree-pta @gol
--ftree-reassoc @gol
--ftree-sink -ftree-sra -ftree-switch-conversion -ftree-tail-merge @gol
+-ftree-reassoc -ftree-sink -ftree-slsr -ftree-sra @gol
+-ftree-switch-conversion -ftree-tail-merge @gol
-ftree-ter -ftree-vect-loop-version -ftree-vectorize -ftree-vrp @gol
-funit-at-a-time -funroll-all-loops -funroll-loops @gol
-funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-loops @gol
@@ -6259,6 +6260,7 @@ compilation time.
-ftree-forwprop @gol
-ftree-fre @gol
-ftree-phiprop @gol
+-ftree-slsr @gol
-ftree-sra @gol
-ftree-pta @gol
-ftree-ter @gol
@@ -6286,6 +6288,7 @@ also turns on the following optimization flags:
-fdevirtualize @gol
-fexpensive-optimizations @gol
-fgcse -fgcse-lm @gol
+-fhoist-adjacent-loads @gol
-finline-small-functions @gol
-findirect-inlining @gol
-fipa-sra @gol
@@ -6311,6 +6314,7 @@ Optimize yet more. @option{-O3} turns on all opti
by @option{-O2} and also turns on the @option{-finline-functions},
@option{-funswitch-loops}, @option{-fpredictive-commoning},
@option{-fgcse-after-reload}, @option{-ftree-vectorize},
+@option{-fvect-cost-model},
@option{-ftree-partial-pre} and @option{-fipa-cp-clone} options.
@item -O0
@@ -7129,6 +7133,13 @@ This flag is enabled by default at @option{-O} and
Perform hoisting of loads from conditional pointers on trees. This
pass is enabled by default at @option{-O} and higher.
+@item -fhoist-adjacent-loads
+@opindex hoist-adjacent-loads
+Speculatively hoist loads from both branches of an if-then-else if the
+loads are from adjacent locations in the same structure and the target
+architecture has a conditional move instruction. This flag is enabled
+by default at @option{-O2} and higher.
+
@item -ftree-copy-prop
@opindex ftree-copy-prop
Perform copy propagation on trees. This pass eliminates unnecessary
@@ -7529,6 +7540,13 @@ defining expression. This results in non-GIMPLE c
much more complex trees to work on resulting in better RTL generation. This is
enabled by default at @option{-O} and higher.
+@item -ftree-slsr
+@opindex ftree-slsr
+Perform straight-line strength reduction on trees. This recognizes related
+expressions involving multiplications and replaces them by less expensive
+calculations when possible. This is enabled by default at @option{-O} and
+higher.
+
@item -ftree-vectorize
@opindex ftree-vectorize
Perform loop vectorization on trees. This flag is enabled by default at
@@ -7550,7 +7568,8 @@ except at level @option{-Os} where it is disabled.
@item -fvect-cost-model
@opindex fvect-cost-model
-Enable cost model for vectorization.
+Enable cost model for vectorization. This option is enabled by default at
+@option{-O3}.
@item -ftree-vrp
@opindex ftree-vrp
Index: gcc/opts.c
===================================================================
--- gcc/opts.c (revision 189574)
+++ gcc/opts.c (working copy)
@@ -452,6 +452,7 @@ static const struct default_options default_option
{ OPT_LEVELS_1_PLUS, OPT_ftree_ch, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcombine_stack_adjustments, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcompare_elim, NULL, 1 },
+ { OPT_LEVELS_1_PLUS, OPT_ftree_slsr, NULL, 1 },
/* -O2 optimizations. */
{ OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 },
Index: gcc/gimple-ssa-strength-reduction.c
===================================================================
--- gcc/gimple-ssa-strength-reduction.c (revision 189574)
+++ gcc/gimple-ssa-strength-reduction.c (working copy)
@@ -1501,7 +1501,7 @@ execute_strength_reduction (void)
static bool
gate_strength_reduction (void)
{
- return optimize > 0;
+ return flag_tree_slsr;
}
struct gimple_opt_pass pass_strength_reduction =
Index: gcc/common.opt
===================================================================
--- gcc/common.opt (revision 189574)
+++ gcc/common.opt (working copy)
@@ -2080,6 +2080,10 @@ ftree-sink
Common Report Var(flag_tree_sink) Optimization
Enable SSA code sinking on trees
+ftree-slsr
+Common Report Var(flag_tree_slsr) Optimization
+Perform straight-line strength reduction
+
ftree-sra
Common Report Var(flag_tree_sra) Optimization
Perform scalar replacement of aggregates
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 13:25 ` William J. Schmidt
2012-07-18 13:29 ` William J. Schmidt
@ 2012-07-18 14:15 ` Steven Bosscher
2012-07-18 14:36 ` Richard Guenther
1 sibling, 1 reply; 11+ messages in thread
From: Steven Bosscher @ 2012-07-18 14:15 UTC (permalink / raw)
To: William J. Schmidt; +Cc: Richard Guenther, gcc-patches, bergner
On Wed, Jul 18, 2012 at 3:24 PM, William J. Schmidt
<wschmidt@linux.vnet.ibm.com> wrote:
> It turns out I was looking at a very old copy of the manual, and the
> -ftree... stuff is not as prevalent now as it once was. I'll just go
> with -fslsr to be consistent with -fgcse, -fipa-sra, etc.
Sadly, it is more prevalent than it ever was!
It's IMHO very unfortunate that such an internal detail is exposed to
the user...
Ciao!
Steven
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 14:00 ` William J. Schmidt
@ 2012-07-18 14:35 ` Richard Guenther
0 siblings, 0 replies; 11+ messages in thread
From: Richard Guenther @ 2012-07-18 14:35 UTC (permalink / raw)
To: William J. Schmidt; +Cc: Steven Bosscher, gcc-patches, bergner
On Wed, 18 Jul 2012, William J. Schmidt wrote:
> Here's the patch with documentation changes included. I also cleaned up
> missing work from a couple of my previous patches, so
> -fhoist-adjacent-loads is documented now, and -fvect-cost-model is added
> to the list of options on by default at -O3.
>
> Ok for trunk?
Ok if it bootstraps / tests ok.
Thanks,
Richard.
> Thanks,
> Bill
>
>
> 2012-07-18 Bill Schmidt <wschmidt@linux.ibm.com>
>
> * doc/invoke.texi: Add -fhoist-adjacent-loads and -ftree-slsr to list
> of flags controlling optimization; add -ftree-slsr to list of flags
> enabled by default at -O; add -fhoist-adjacent-loads to list of flags
> enabled by default at -O2; add -fvect-cost-model to list of flags
> enabled by default at -O3; document -fhoist-adjacent-loads and
> -ftree-slsr.
> * opts.c (default_option): Make -ftree-slsr default at -O1 and above.
> * gimple-ssa-strength-reduction.c (gate_strength_reduction): Use
> flag_tree_slsr.
> * common.opt: Add -ftree-slsr with flag_tree_slsr.
>
>
> Index: gcc/doc/invoke.texi
> ===================================================================
> --- gcc/doc/invoke.texi (revision 189574)
> +++ gcc/doc/invoke.texi (working copy)
> @@ -364,7 +364,8 @@ Objective-C and Objective-C++ Dialects}.
> -ffast-math -ffinite-math-only -ffloat-store -fexcess-precision=@var{style} @gol
> -fforward-propagate -ffp-contract=@var{style} -ffunction-sections @gol
> -fgcse -fgcse-after-reload -fgcse-las -fgcse-lm -fgraphite-identity @gol
> --fgcse-sm -fif-conversion -fif-conversion2 -findirect-inlining @gol
> +-fgcse-sm -fhoist-adjacent-loads -fif-conversion @gol
> +-fif-conversion2 -findirect-inlining @gol
> -finline-functions -finline-functions-called-once -finline-limit=@var{n} @gol
> -finline-small-functions -fipa-cp -fipa-cp-clone -fipa-matrix-reorg @gol
> -fipa-pta -fipa-profile -fipa-pure-const -fipa-reference @gol
> @@ -413,8 +414,8 @@ Objective-C and Objective-C++ Dialects}.
> -ftree-phiprop -ftree-loop-distribution -ftree-loop-distribute-patterns @gol
> -ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize @gol
> -ftree-parallelize-loops=@var{n} -ftree-pre -ftree-partial-pre -ftree-pta @gol
> --ftree-reassoc @gol
> --ftree-sink -ftree-sra -ftree-switch-conversion -ftree-tail-merge @gol
> +-ftree-reassoc -ftree-sink -ftree-slsr -ftree-sra @gol
> +-ftree-switch-conversion -ftree-tail-merge @gol
> -ftree-ter -ftree-vect-loop-version -ftree-vectorize -ftree-vrp @gol
> -funit-at-a-time -funroll-all-loops -funroll-loops @gol
> -funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-loops @gol
> @@ -6259,6 +6260,7 @@ compilation time.
> -ftree-forwprop @gol
> -ftree-fre @gol
> -ftree-phiprop @gol
> +-ftree-slsr @gol
> -ftree-sra @gol
> -ftree-pta @gol
> -ftree-ter @gol
> @@ -6286,6 +6288,7 @@ also turns on the following optimization flags:
> -fdevirtualize @gol
> -fexpensive-optimizations @gol
> -fgcse -fgcse-lm @gol
> +-fhoist-adjacent-loads @gol
> -finline-small-functions @gol
> -findirect-inlining @gol
> -fipa-sra @gol
> @@ -6311,6 +6314,7 @@ Optimize yet more. @option{-O3} turns on all opti
> by @option{-O2} and also turns on the @option{-finline-functions},
> @option{-funswitch-loops}, @option{-fpredictive-commoning},
> @option{-fgcse-after-reload}, @option{-ftree-vectorize},
> +@option{-fvect-cost-model},
> @option{-ftree-partial-pre} and @option{-fipa-cp-clone} options.
>
> @item -O0
> @@ -7129,6 +7133,13 @@ This flag is enabled by default at @option{-O} and
> Perform hoisting of loads from conditional pointers on trees. This
> pass is enabled by default at @option{-O} and higher.
>
> +@item -fhoist-adjacent-loads
> +@opindex hoist-adjacent-loads
> +Speculatively hoist loads from both branches of an if-then-else if the
> +loads are from adjacent locations in the same structure and the target
> +architecture has a conditional move instruction. This flag is enabled
> +by default at @option{-O2} and higher.
> +
> @item -ftree-copy-prop
> @opindex ftree-copy-prop
> Perform copy propagation on trees. This pass eliminates unnecessary
> @@ -7529,6 +7540,13 @@ defining expression. This results in non-GIMPLE c
> much more complex trees to work on resulting in better RTL generation. This is
> enabled by default at @option{-O} and higher.
>
> +@item -ftree-slsr
> +@opindex ftree-slsr
> +Perform straight-line strength reduction on trees. This recognizes related
> +expressions involving multiplications and replaces them by less expensive
> +calculations when possible. This is enabled by default at @option{-O} and
> +higher.
> +
> @item -ftree-vectorize
> @opindex ftree-vectorize
> Perform loop vectorization on trees. This flag is enabled by default at
> @@ -7550,7 +7568,8 @@ except at level @option{-Os} where it is disabled.
>
> @item -fvect-cost-model
> @opindex fvect-cost-model
> -Enable cost model for vectorization.
> +Enable cost model for vectorization. This option is enabled by default at
> +@option{-O3}.
>
> @item -ftree-vrp
> @opindex ftree-vrp
> Index: gcc/opts.c
> ===================================================================
> --- gcc/opts.c (revision 189574)
> +++ gcc/opts.c (working copy)
> @@ -452,6 +452,7 @@ static const struct default_options default_option
> { OPT_LEVELS_1_PLUS, OPT_ftree_ch, NULL, 1 },
> { OPT_LEVELS_1_PLUS, OPT_fcombine_stack_adjustments, NULL, 1 },
> { OPT_LEVELS_1_PLUS, OPT_fcompare_elim, NULL, 1 },
> + { OPT_LEVELS_1_PLUS, OPT_ftree_slsr, NULL, 1 },
>
> /* -O2 optimizations. */
> { OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 },
> Index: gcc/gimple-ssa-strength-reduction.c
> ===================================================================
> --- gcc/gimple-ssa-strength-reduction.c (revision 189574)
> +++ gcc/gimple-ssa-strength-reduction.c (working copy)
> @@ -1501,7 +1501,7 @@ execute_strength_reduction (void)
> static bool
> gate_strength_reduction (void)
> {
> - return optimize > 0;
> + return flag_tree_slsr;
> }
>
> struct gimple_opt_pass pass_strength_reduction =
> Index: gcc/common.opt
> ===================================================================
> --- gcc/common.opt (revision 189574)
> +++ gcc/common.opt (working copy)
> @@ -2080,6 +2080,10 @@ ftree-sink
> Common Report Var(flag_tree_sink) Optimization
> Enable SSA code sinking on trees
>
> +ftree-slsr
> +Common Report Var(flag_tree_slsr) Optimization
> +Perform straight-line strength reduction
> +
> ftree-sra
> Common Report Var(flag_tree_sra) Optimization
> Perform scalar replacement of aggregates
>
>
>
--
Richard Guenther <rguenther@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Add flag to control straight-line strength reduction
2012-07-18 14:15 ` Steven Bosscher
@ 2012-07-18 14:36 ` Richard Guenther
0 siblings, 0 replies; 11+ messages in thread
From: Richard Guenther @ 2012-07-18 14:36 UTC (permalink / raw)
To: Steven Bosscher; +Cc: William J. Schmidt, gcc-patches, bergner
On Wed, 18 Jul 2012, Steven Bosscher wrote:
> On Wed, Jul 18, 2012 at 3:24 PM, William J. Schmidt
> <wschmidt@linux.vnet.ibm.com> wrote:
> > It turns out I was looking at a very old copy of the manual, and the
> > -ftree... stuff is not as prevalent now as it once was. I'll just go
> > with -fslsr to be consistent with -fgcse, -fipa-sra, etc.
>
> Sadly, it is more prevalent than it ever was!
> It's IMHO very unfortunate that such an internal detail is exposed to
> the user...
Indeed... not sure if we want a set of aliases without the tree-
or rtl- part.
Richard.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2012-07-18 14:36 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-17 15:46 [PATCH] Add flag to control straight-line strength reduction William J. Schmidt
2012-07-18 7:59 ` Richard Guenther
2012-07-18 8:11 ` Steven Bosscher
2012-07-18 9:01 ` Richard Guenther
2012-07-18 13:25 ` William J. Schmidt
2012-07-18 13:29 ` William J. Schmidt
2012-07-18 14:15 ` Steven Bosscher
2012-07-18 14:36 ` Richard Guenther
2012-07-18 14:00 ` William J. Schmidt
2012-07-18 14:35 ` Richard Guenther
2012-07-18 9:02 ` Eric Botcazou
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).