Commit a9a32e56 by Jan Hubicka Committed by Jan Hubicka

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
parent 13b1afe4
2019-01-05 Jan Hubicka <hubicka@ucw.cz> 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>
* doc/invoke.texi (max-inline-insns-small): New parameters. * doc/invoke.texi (max-inline-insns-small): New parameters.
* ipa-inline.c (want_early_inline_function_p): simplify. * ipa-inline.c (want_early_inline_function_p): simplify.
(want_inline_small_function_p): Fix pasto from previous patch; (want_inline_small_function_p): Fix pasto from previous patch;
......
...@@ -9499,6 +9499,8 @@ DO I = 1, N ...@@ -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 ...@@ -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++) ...@@ -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 ...@@ -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
...@@ -1708,10 +1708,18 @@ enable_fdo_optimizations (struct gcc_options *opts, ...@@ -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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment