From e13602df833087e6f47f6a836eda700d2d1ebb20 Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Mon, 17 Oct 2005 12:42:51 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/config/sh/sh.h | 15 +++++++++++++++ 2 files changed, 22 insertions(+) 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 + + * 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 * 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 \ + . */ \ + 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) \