As noted in the BZ, we were passing a SEQUENCE to CROSSING_JUMP_P, which
triggers an RTL checking failure. It's pretty obvious that we should
have been passing in "delay_jump_insn" and doing so, of course, fixes
the failure.
I haven't been able to put together a sparc64 system for testing under
qemu, but I'm highly confident we've got the right fix.
I've committed this to the trunk. I'm removing the gcc-6 regression
marker, but adding one for gcc-5 as I believe gcc-5 suffers from the
same problem -- even if this testcase doesn't trigger.
Jeff
commit 295d529101bb79b4f876e119d8e3e8dbd43963d2
Author: law
Date: Wed Mar 16 16:58:12 2016 +
PR rtl-optimization/70024
* reorg.c (relax_delay_slots): Pass right argument to CROSSING_JUMP_P.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234262
138bc75d-0d04-0410-961f-82ee72b054a4
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b673443..ef16b27 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-11 Jeff Law
+
+ PR rtl-optimization/70024
+ * reorg.c (relax_delay_slots): Pass right argument to CROSSING_JUMP_P.
+
2016-03-16 Richard Henderson
PR middle-end/70199
diff --git a/gcc/reorg.c b/gcc/reorg.c
index a02141f..7b28821 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -3307,7 +3307,7 @@ relax_delay_slots (rtx_insn *first)
reorg_redirect_jump (delay_jump_insn, trial);
target_label = trial;
if (crossing)
- CROSSING_JUMP_P (insn) = 1;
+ CROSSING_JUMP_P (delay_jump_insn) = 1;
}
/* If the first insn at TARGET_LABEL is redundant with a previous