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
This commit is contained in:
Kaz Kojima 2011-03-19 23:22:18 +00:00
parent 67bd9a32cf
commit 5969b52d80
2 changed files with 16 additions and 0 deletions

View File

@ -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

View File

@ -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;