OSDN Git Service

* config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_schedule_insns
authorkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Oct 2005 12:42:51 +0000 (12:42 +0000)
committerkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Oct 2005 12:42:51 +0000 (12:42 +0000)
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: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105496 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.h

index bc5a5e9..9825d74 100644 (file)
@@ -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
index 306da7a..486cc97 100644 (file)
@@ -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)                                                        \