2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-02-15 20:20:17 +08:00

re PR rtl-optimization/20376 (The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.)

PR rtl-optimization/20376
	* toplev.c (process_options): Enable -fweb and -frename-registers when
	unrolling.
	* doc/invoke.texi: Update the information about when -fweb and
	-frename-registers are enabled.

From-SVN: r101961
This commit is contained in:
Zdenek Dvorak 2005-07-13 11:38:44 +02:00 committed by Zdenek Dvorak
parent fe83f5439a
commit 7869fe47b3
3 changed files with 23 additions and 11 deletions

View File

@ -1,3 +1,11 @@
2005-07-12 Zdenek Dvorak <dvorakz@suse.cz>
PR rtl-optimization/20376
* toplev.c (process_options): Enable -fweb and -frename-registers when
unrolling.
* doc/invoke.texi: Update the information about when -fweb and
-frename-registers are enabled.
2005-07-12 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/21840

View File

@ -5017,8 +5017,7 @@ the loop is entered. This usually makes programs run more slowly.
@opindex -fsplit-ivs-in-unroller
Enables expressing of values of induction variables in later iterations
of the unrolled loop using the value in the first iteration. This breaks
long dependency chains, thus improving efficiency of the scheduling passes
(for best results, @option{-fweb} should be used as well).
long dependency chains, thus improving efficiency of the scheduling passes.
Combination of @option{-fweb} and CSE is often sufficient to obtain the
same effect. However in cases the loop body is more complicated than
@ -5260,9 +5259,7 @@ passes, such as CSE, loop optimizer and trivial dead code remover. It can,
however, make debugging impossible, since variables will no longer stay in a
``home register''.
Enabled at levels @option{-O2}, @option{-O3}, @option{-Os},
on targets where the default format for debugging information supports
variable tracking.
Enabled by default with @option{-funroll-loops}.
@item -fwhole-program
@opindex fwhole-program
@ -5524,7 +5521,7 @@ debug information format adopted by the target, however, it can
make debugging impossible, since variables will no longer stay in
a ``home register''.
Not enabled by default at any level because it has known bugs.
Enabled by default with @option{-funroll-loops}.
@item -ftracer
@opindex ftracer
@ -5538,9 +5535,10 @@ Enabled with @option{-fprofile-use}.
@opindex funroll-loops
Unroll loops whose number of iterations can be determined at compile time or
upon entry to the loop. @option{-funroll-loops} implies
@option{-frerun-cse-after-loop}. It also turns on complete loop peeling
(i.e.@: complete removal of loops with small constant number of iterations).
This option makes code larger, and may or may not make it run faster.
@option{-frerun-cse-after-loop}, @option{-fweb} and @option{-frename-registers}.
It also turns on complete loop peeling (i.e.@: complete removal of loops with
small constant number of iterations). This option makes code larger, and may
or may not make it run faster.
Enabled with @option{-fprofile-use}.

View File

@ -1530,9 +1530,15 @@ process_options (void)
if (flag_unroll_all_loops)
flag_unroll_loops = 1;
/* The loop unrolling code assumes that cse will be run after loop. */
/* The loop unrolling code assumes that cse will be run after loop.
Also enable -fweb and -frename-registers that help scheduling
the unrolled loop. */
if (flag_unroll_loops || flag_peel_loops)
flag_rerun_cse_after_loop = 1;
{
flag_rerun_cse_after_loop = 1;
flag_web = 1;
flag_rename_registers = 1;
}
/* If explicitly asked to run new loop optimizer, switch off the old
one. */