From 91d1d521017540eff785384ba750c870375e014e Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Thu, 13 Aug 2009 22:16:07 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/sh/sh.c | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70905a8fe1b..77c52bf8afb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-08-13 Kaz Kojima + + * 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 * tree-ssa-loop-prefetch.c diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index b092c0e8a3c..a4be11cb979 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)