diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2005-10-17 12:42:51 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2005-10-17 12:42:51 +0000 |
commit | e13602df833087e6f47f6a836eda700d2d1ebb20 (patch) | |
tree | de9122c93809b4e9c25928d65dfee5b865e22208 | |
parent | a95c63d87679a6a682f0d923c988d2480c5f5525 (diff) | |
download | gcc-e13602df833087e6f47f6a836eda700d2d1ebb20.zip gcc-e13602df833087e6f47f6a836eda700d2d1ebb20.tar.gz gcc-e13602df833087e6f47f6a836eda700d2d1ebb20.tar.bz2 |
sh.h (OPTIMIZATION_OPTIONS): Set flag_schedule_insns to 2 if it's already non-zero.
* config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_schedule_insns
to 2 if it's already non-zero.
(OVERRIDE_OPTIONS): Clear flag_schedule_insns if flag_exceptions
is set and warn about it if flag_schedule_insns is 1.
From-SVN: r105496
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/sh/sh.h | 15 |
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc5a5e9..9825d74 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-10-17 Kaz Kojima <kkojima@gcc.gnu.org> + + * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_schedule_insns + to 2 if it's already non-zero. + (OVERRIDE_OPTIONS): Clear flag_schedule_insns if flag_exceptions + is set and warn about it if flag_schedule_insns is 1. + 2005-10-17 Paul Woegerer <paul.woegerer@nsc.com> * config/crx/crx.md: Compare-and-branch instructions need to diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 306da7a..486cc97 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -486,6 +486,10 @@ do { \ flag_finite_math_only. We set it to 2 here so we know if the user \ explicitly requested this to be on or off. */ \ flag_finite_math_only = 2; \ + /* If flag_schedule_insns is 1, we set it to 2 here so we know if \ + the user explicitly requested this to be on or off. */ \ + if (flag_schedule_insns > 0) \ + flag_schedule_insns = 2; \ } while (0) #define ASSEMBLER_DIALECT assembler_dialect @@ -661,6 +665,17 @@ do { \ SH3 and lower as they give spill failures for R0. */ \ if (!TARGET_HARD_SH4) \ flag_schedule_insns = 0; \ + /* ??? Current exception handling places basic block boundaries \ + after call_insns. It causes the high pressure on R0 and gives \ + spill failures for R0 in reload. See PR 22553 and the thread \ + on gcc-patches \ + <http://gcc.gnu.org/ml/gcc-patches/2005-10/msg00816.html>. */ \ + else if (flag_exceptions) \ + { \ + if (flag_schedule_insns == 1) \ + warning (0, "ignoring -fschedule-insns because of exception handling bug"); \ + flag_schedule_insns = 0; \ + } \ } \ \ if (align_loops == 0) \ |