aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2009-08-13 22:16:07 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2009-08-13 22:16:07 +0000
commit91d1d521017540eff785384ba750c870375e014e (patch)
tree56ca2f426c3384c9f4634a50b05c4fde4a44505e /gcc
parent2c6dd136d3ff53b7fbc3ec135c20089de1946fbe (diff)
downloadgcc-91d1d521017540eff785384ba750c870375e014e.zip
gcc-91d1d521017540eff785384ba750c870375e014e.tar.gz
gcc-91d1d521017540eff785384ba750c870375e014e.tar.bz2
sh.c (sh_override_options): When flag_exceptions or flag_unwind_tables is on...
* config/sh/sh.c (sh_override_options): When flag_exceptions or flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off. From-SVN: r150727
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sh/sh.c23
2 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 70905a8fe..77c52bf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c (sh_override_options): When flag_exceptions or
+ flag_unwind_tables is on, turn flag_reorder_blocks_and_partition
+ off.
+
2009-08-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
* tree-ssa-loop-prefetch.c
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index b092c0e..a4be11c 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -874,6 +874,29 @@ sh_override_options (void)
flag_schedule_insns = 0;
}
+ /* Unwinding with -freorder-blocks-and-partition does not work on this
+ architecture, because it requires far jumps to label crossing between
+ hot/cold sections which are rejected on this architecture. */
+ if (flag_reorder_blocks_and_partition)
+ {
+ if (flag_exceptions)
+ {
+ inform (input_location,
+ "-freorder-blocks-and-partition does not work with "
+ "exceptions on this architecture");
+ flag_reorder_blocks_and_partition = 0;
+ flag_reorder_blocks = 1;
+ }
+ else if (flag_unwind_tables)
+ {
+ inform (input_location,
+ "-freorder-blocks-and-partition does not support unwind "
+ "info on this architecture");
+ flag_reorder_blocks_and_partition = 0;
+ flag_reorder_blocks = 1;
+ }
+ }
+
if (align_loops == 0)
align_loops = 1 << (TARGET_SH5 ? 3 : 2);
if (align_jumps == 0)