aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2010-02-10 13:13:49 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2010-02-10 13:13:49 +0000
commitbd55b817bf00684b9e40208055a036fbbe041912 (patch)
treec32f75e270e6e2db0985a17f1dccda6ae842baf9 /gcc
parent2ab43a5241aa2b4055487511a5a4b405081cf9f1 (diff)
downloadgcc-bd55b817bf00684b9e40208055a036fbbe041912.zip
gcc-bd55b817bf00684b9e40208055a036fbbe041912.tar.gz
gcc-bd55b817bf00684b9e40208055a036fbbe041912.tar.bz2
sh.c (find_barrier): Skip call insn with a REG_EH_REGION note when flag_exceptions is set.
* config/sh/sh.c (find_barrier): Skip call insn with a REG_EH_REGION note when flag_exceptions is set. From-SVN: r156656
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/sh.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 887a03b..e680a14 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-10 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c (find_barrier): Skip call insn with a REG_EH_REGION
+ note when flag_exceptions is set.
+
2010-02-10 Duncan Sands <baldrick@free.fr>
* Makefile.in (PLUGIN_HEADERS): Add debug.h.
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index d482100..3e8ff24 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -4654,6 +4654,13 @@ find_barrier (int num_mova, rtx mova, rtx from)
if (last_got)
from = PREV_INSN (last_got);
+ /* Don't insert the constant pool table at the position which
+ may be the landing pad. */
+ if (flag_exceptions
+ && CALL_P (from)
+ && find_reg_note (from, REG_EH_REGION, NULL_RTX))
+ from = PREV_INSN (from);
+
/* Walk back to be just before any jump or label.
Putting it before a label reduces the number of times the branch
around the constant pool table will be hit. Putting it before