diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2011-03-19 23:22:18 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2011-03-19 23:22:18 +0000 |
commit | 5969b52d80555cf74c70931b625d340ab7c5971b (patch) | |
tree | 00a48573e2d619d751279488e6813a8c4f0a89ec | |
parent | 67bd9a32cfa19de87bb909f42ed604199940b230 (diff) | |
download | gcc-5969b52d80555cf74c70931b625d340ab7c5971b.zip gcc-5969b52d80555cf74c70931b625d340ab7c5971b.tar.gz gcc-5969b52d80555cf74c70931b625d340ab7c5971b.tar.bz2 |
sh.c (find_barrier): Don't emit a constant pool between a call and its corresponding...
* config/sh/sh.c (find_barrier): Don't emit a constant pool
between a call and its corresponding CALL_ARG_LOCATION note.
From-SVN: r171185
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf32ebb..87fb033 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-19 Kaz Kojima <kkojima@gcc.gnu.org> + + PR debug/48178 + * config/sh/sh.c (find_barrier): Don't emit a constant pool + between a call and its corresponding CALL_ARG_LOCATION note. + 2011-03-19 Anatoly Sokolov <aesok@post.ru> * cfgcleanup.c (mark_effect): Use bitmap_set_range/bitmap_clear_range diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 18bd964..fc739dd 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -4876,6 +4876,16 @@ find_barrier (int num_mova, rtx mova, rtx from) || LABEL_P (from)) from = PREV_INSN (from); + /* Make sure we do not split between a call and its corresponding + CALL_ARG_LOCATION note. */ + if (CALL_P (from)) + { + rtx next = NEXT_INSN (from); + if (next && NOTE_P (next) + && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION) + from = next; + } + from = emit_jump_insn_after (gen_jump (label), from); JUMP_LABEL (from) = label; LABEL_NUSES (label) = 1; |