mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
13b1afe4de
commit
a9a32e564d
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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. */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue