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 | 04305a56a3f87956fbae4811c372d5da3f563838 (patch) | |
tree | de9122c93809b4e9c25928d65dfee5b865e22208 | |
parent | d911b3108a3d04a673c4db13b653e800c377b258 (diff) |
* 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.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@105496 138bc75d-0d04-0410-961f-82ee72b054a4
-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 bc5a5e9f45a..9825d7463eb 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 306da7aa5db..486cc97544d 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) \ |