aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2005-10-17 12:42:51 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2005-10-17 12:42:51 +0000
commit04305a56a3f87956fbae4811c372d5da3f563838 (patch)
treede9122c93809b4e9c25928d65dfee5b865e22208
parentd911b3108a3d04a673c4db13b653e800c377b258 (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/ChangeLog7
-rw-r--r--gcc/config/sh/sh.h15
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) \