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

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

Reply via email to