https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62025
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- And with: --- sched-deps.c (revision 207605) +++ sched-deps.c (working copy) @@ -3034,6 +3034,21 @@ sched_analyze_insn (struct deps_desc *de || (NONJUMP_INSN_P (insn) && control_flow_insn_p (insn))) reg_pending_barrier = MOVE_BARRIER; + if (!DEBUG_INSN_P (insn) && reload_completed && getenv ("SKIPB") && getenv ("SKIPE")) + { + static int cntskip; + ++cntskip; + if (cntskip > atoi (getenv ("SKIPB")) && cntskip < atoi (getenv ("SKIPE"))) + reg_pending_barrier = TRUE_BARRIER; + } + if (!DEBUG_INSN_P (insn) && reload_completed && getenv ("FLUSHB") && getenv ("FLUSHE")) + { + static int cntskip; + ++cntskip; + if (cntskip > atoi (getenv ("FLUSHB")) && cntskip < atoi (getenv ("FLUSHE"))) + flush_pending_lists (deps, insn, true, true); + } + if (sched_pressure != SCHED_PRESSURE_NONE) { setup_insn_reg_uses (deps, insn); again, on top of r207605, and -O2 -m31 -march=z196 -mtune=z10, I get no miscompilation with FLUSHB=6261 FLUSHE=6263 ./cc1 -m31 -O2 -march=z196 -mtune=z10 sha.c -o sha3.s -quiet -nostdinc diff -up -U8 sha1.s sha3.s --- sha1.s 2014-08-12 10:40:14.813740998 +0200 +++ sha3.s 2014-08-12 10:46:58.425686712 +0200 @@ -6246,38 +6246,38 @@ sha512_block_data_order: lm %r2,%r3,312(%r15) x %r11,152(%r15) or %r5,%r8 l %r8,276(%r15) n %r9,216(%r15) srl %r4,7 n %r11,184(%r15) al %r3,252(%r8) - ahi %r8,128 - alc %r2,120(%r8) + alc %r2,248(%r8) + x %r0,1104(%r15) xr %r11,%r9 st %r11,1072(%r15) - xr %r1,%r5 n %r7,188(%r15) - x %r0,1104(%r15) - st %r8,276(%r15) + xr %r1,%r5 stm %r2,%r3,120(%r15) st %r0,1084(%r15) l %r3,116(%r15) sll %r3,25 lr %r6,%r3 l %r3,224(%r15) xr %r3,%r10 st %r3,1068(%r15) l %r3,156(%r15) l %r2,232(%r15) xr %r2,%r12 st %r2,1088(%r15) - lm %r10,%r11,120(%r15) n %r3,220(%r15) + ahi %r8,128 + lm %r10,%r11,120(%r15) + st %r8,276(%r15) al %r11,164(%r15) alc %r10,160(%r15) xr %r7,%r3 st %r7,1076(%r15) lr %r3,%r11 or %r6,%r4 lm %r4,%r5,304(%r15) al %r3,1068(%r15)