diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2009-10-22 01:44:39 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@redhat.com> | 2009-10-22 01:44:39 +0000 |
commit | 46ffbfdca48aeb09800392998ee05d502994cb6f (patch) | |
tree | a8f72381ffa5fe5e541724f227760f360d1ef388 | |
parent | e5cbf21ff3054c29ae1b7db1c80ae1b3c92c1aec (diff) |
2009-10-21 Vladimir Makarov <vmakarov@redhat.com>
* doc/invoke.texi (fira-loop-pressure): Update default value.
* opts.c (decode_options): Remove default value setting for
flag_ira_loop_pressure.
* config/ia64/ia64.c (ia64_override_options): Set
flag_ira_loop_pressure up for -O3.
* config/rs6000/rs6000.c (rs6000_override_options): Ditto.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@153445 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 7 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 8 | ||||
-rw-r--r-- | gcc/opts.c | 1 |
5 files changed, 28 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5e3ce94a1f..1808c43aa0e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2009-10-21 Vladimir Makarov <vmakarov@redhat.com> + + * doc/invoke.texi (fira-loop-pressure): Update default value. + * opts.c (decode_options): Remove default value setting for + flag_ira_loop_pressure. + * config/ia64/ia64.c (ia64_override_options): Set + flag_ira_loop_pressure up for -O3. + * config/rs6000/rs6000.c (rs6000_override_options): Ditto. + 2009-10-21 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/41497 diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 75c8f0ee6c4..23fc7540ec0 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -5496,6 +5496,14 @@ ia64_override_options (void) if (TARGET_AUTO_PIC) target_flags |= MASK_CONST_GP; + /* Numerous experiment shows that IRA based loop pressure + calculation works better for RTL loop invariant motion on targets + with enough (>= 32) registers. It is an expensive optimization. + So it is on only for peak performance. */ + if (optimize >= 3) + flag_ira_loop_pressure = 1; + + ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload; flag_schedule_insns_after_reload = 0; diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 8bb92129ecf..9b03a9bfe68 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2281,6 +2281,13 @@ rs6000_override_options (const char *default_cpu) | MASK_POPCNTD | MASK_VSX | MASK_ISEL | MASK_NO_UPDATE) }; + /* Numerous experiment shows that IRA based loop pressure + calculation works better for RTL loop invariant motion on targets + with enough (>= 32) registers. It is an expensive optimization. + So it is on only for peak performance. */ + if (optimize >= 3) + flag_ira_loop_pressure = 1; + /* Set the pointer size. */ if (TARGET_64BIT) { diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 0a7d9790476..7b20ced5483 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -5733,8 +5733,7 @@ invoking @option{-O2} on programs that use computed gotos. Optimize yet more. @option{-O3} turns on all optimizations specified by @option{-O2} and also turns on the @option{-finline-functions}, @option{-funswitch-loops}, @option{-fpredictive-commoning}, -@option{-fgcse-after-reload}, @option{-ftree-vectorize} and -@option{-fira-loop-pressure} options. +@option{-fgcse-after-reload} and @option{-ftree-vectorize} options. @item -O0 @opindex O0 @@ -6235,9 +6234,10 @@ architectures with big regular register files. @opindex fira-loop-pressure Use IRA to evaluate register pressure in loops for decision to move loop invariants. Usage of this option usually results in generation -of faster and smaller code but can slow compiler down. +of faster and smaller code on machines with big register files (>= 32 +registers) but it can slow compiler down. -This option is enabled at level @option{-O3}. +This option is enabled at level @option{-O3} for some targets. @item -fno-ira-share-save-slots @opindex fno-ira-share-save-slots diff --git a/gcc/opts.c b/gcc/opts.c index c69a399768f..51a0cb95419 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -917,7 +917,6 @@ decode_options (unsigned int argc, const char **argv) flag_ipa_cp_clone = opt3; if (flag_ipa_cp_clone) flag_ipa_cp = 1; - flag_ira_loop_pressure = opt3; /* Just -O1/-O0 optimizations. */ opt1_max = (optimize <= 1); |