diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2010-02-10 13:13:49 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2010-02-10 13:13:49 +0000 |
commit | bd55b817bf00684b9e40208055a036fbbe041912 (patch) | |
tree | c32f75e270e6e2db0985a17f1dccda6ae842baf9 /gcc | |
parent | 2ab43a5241aa2b4055487511a5a4b405081cf9f1 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 7 |
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 |