opts.c (enable_fdo_optimizations): Enable version-loops-for-strides...

* opts.c (enable_fdo_optimizations): Enable
	version-loops-for-strides, loop-interchange, unrol-and-jam
	and tree-loop-distribution.
	* invoke.texi: Document newly enabled options.

From-SVN: r267611
This commit is contained in:
Jan Hubicka 2019-01-06 17:44:51 +01:00 committed by Jan Hubicka
parent 13b1afe4de
commit a9a32e564d
3 changed files with 23 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2019-01-05 Jan Hubicka <hubicka@ucw.cz>
* opts.c (enable_fdo_optimizations): Enable
version-loops-for-strides, loop-interchange, unrol-and-jam
and tree-loop-distribution.
* invoke.texi: Document newly enabled options.
2019-01-05 Jan Hubicka <hubicka@ucw.cz> 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
* doc/invoke.texi (max-inline-insns-small): New parameters. * doc/invoke.texi (max-inline-insns-small): New parameters.

View File

@ -9499,6 +9499,8 @@ DO I = 1, N
D(I) = E(I) * F D(I) = E(I) * F
ENDDO ENDDO
@end smallexample @end smallexample
This flag is enabled by default at @option{-O3}.
It is also enabled by @option{-fprofile-use} and @option{-fauto-profile}.
@item -ftree-loop-distribute-patterns @item -ftree-loop-distribute-patterns
@opindex ftree-loop-distribute-patterns @opindex ftree-loop-distribute-patterns
@ -9524,6 +9526,8 @@ DO I = 1, N
ENDDO ENDDO
@end smallexample @end smallexample
and the initialization loop is transformed into a call to memset zero. and the initialization loop is transformed into a call to memset zero.
This flag is enabled by default at @option{-O3}.
It is also enabled by @option{-fprofile-use} and @option{-fauto-profile}.
@item -floop-interchange @item -floop-interchange
@opindex floop-interchange @opindex floop-interchange
@ -9544,12 +9548,14 @@ for (int i = 0; i < N; i++)
c[i][j] = c[i][j] + a[i][k]*b[k][j]; c[i][j] = c[i][j] + a[i][k]*b[k][j];
@end smallexample @end smallexample
This flag is enabled by default at @option{-O3}. This flag is enabled by default at @option{-O3}.
It is also enabled by @option{-fprofile-use} and @option{-fauto-profile}.
@item -floop-unroll-and-jam @item -floop-unroll-and-jam
@opindex floop-unroll-and-jam @opindex floop-unroll-and-jam
Apply unroll and jam transformations on feasible loops. In a loop Apply unroll and jam transformations on feasible loops. In a loop
nest this unrolls the outer loop by some factor and fuses the resulting nest this unrolls the outer loop by some factor and fuses the resulting
multiple inner loops. This flag is enabled by default at @option{-O3}. multiple inner loops. This flag is enabled by default at @option{-O3}.
It is also enabled by @option{-fprofile-use} and @option{-fauto-profile}.
@item -ftree-loop-im @item -ftree-loop-im
@opindex ftree-loop-im @opindex ftree-loop-im
@ -10804,6 +10810,8 @@ else
This is particularly useful for assumed-shape arrays in Fortran where This is particularly useful for assumed-shape arrays in Fortran where
(for example) it allows better vectorization assuming contiguous accesses. (for example) it allows better vectorization assuming contiguous accesses.
This flag is enabled by default at @option{-O3}.
It is also enabled by @option{-fprofile-use} and @option{-fauto-profile}.
@item -ffunction-sections @item -ffunction-sections
@itemx -fdata-sections @itemx -fdata-sections

View File

@ -1708,10 +1708,18 @@ enable_fdo_optimizations (struct gcc_options *opts,
opts->x_flag_tree_loop_vectorize = value; opts->x_flag_tree_loop_vectorize = value;
if (!opts_set->x_flag_tree_slp_vectorize) if (!opts_set->x_flag_tree_slp_vectorize)
opts->x_flag_tree_slp_vectorize = value; opts->x_flag_tree_slp_vectorize = value;
if (!opts_set->x_flag_version_loops_for_strides)
opts->x_flag_version_loops_for_strides = value;
if (!opts_set->x_flag_vect_cost_model) if (!opts_set->x_flag_vect_cost_model)
opts->x_flag_vect_cost_model = VECT_COST_MODEL_DYNAMIC; opts->x_flag_vect_cost_model = VECT_COST_MODEL_DYNAMIC;
if (!opts_set->x_flag_tree_loop_distribute_patterns) if (!opts_set->x_flag_tree_loop_distribute_patterns)
opts->x_flag_tree_loop_distribute_patterns = value; opts->x_flag_tree_loop_distribute_patterns = value;
if (!opts_set->x_flag_loop_interchange)
opts->x_flag_loop_interchange = value;
if (!opts_set->x_flag_unroll_jam)
opts->x_flag_unroll_jam = value;
if (!opts_set->x_flag_tree_loop_distribution)
opts->x_flag_tree_loop_distribution = value;
} }
/* -f{,no-}sanitize{,-recover}= suboptions. */ /* -f{,no-}sanitize{,-recover}= suboptions. */