diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2005-07-13 11:38:44 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2005-07-13 09:38:44 +0000 |
commit | 7869fe47b3a1b1ea8ecc628860c4996bb5857f37 (patch) | |
tree | 46cadb0d2b158517b4c06e56835052187efbef3c /gcc | |
parent | fe83f5439acb1ce8d12d46e991e88aecf5d7c6dc (diff) | |
download | gcc-7869fe47b3a1b1ea8ecc628860c4996bb5857f37.zip gcc-7869fe47b3a1b1ea8ecc628860c4996bb5857f37.tar.gz gcc-7869fe47b3a1b1ea8ecc628860c4996bb5857f37.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 16 | ||||
-rw-r--r-- | gcc/toplev.c | 10 |
3 files changed, 23 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3f3d0fe..fcef3d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 0f509d0..ba355c0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -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}. diff --git a/gcc/toplev.c b/gcc/toplev.c index 8e7da03c..0250c97 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -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. */ |