Hi,
The attached patch is to work around PR debug/48178 on SH
which causes ~2000 failures in the test for sh4-unknown-linux-gnu.
s390 has avoided the same issue with the target specific patch
and the patch below is quite similar with it.
Tested with "make -k check" on sh4-unknown-linux-gnu and applied
on trunk.
Regards,
kaz
--
2011-03-19 Kaz Kojima <[email protected]>
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.
--- ORIG/trunk/gcc/config/sh/sh.c 2011-03-19 09:34:38.000000000 +0900
+++ LOCAL/trunk/gcc/config/sh/sh.c 2011-03-19 15:06:13.000000000 +0900
@@ -4876,6 +4876,16 @@ find_barrier (int num_mova, rtx mova, rt
|| 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;