This fixes a miscompile of glibc trunk on i?86 which happens because the sched-deps treats a debug-insn with volatile ASM_OPERANDS as a barrier.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. Ok for trunk and branches? Thanks, Richard. 2014-07-16 Richard Biener <rguent...@suse.de> PR rtl-optimization/61801 * sched-deps.c (sched_analyze_2): For ASM_OPERANDS and ASM_INPUT don't set reg_pending_barrier if it appears in a debug-insn. Index: gcc/sched-deps.c =================================================================== --- gcc/sched-deps.c (revision 212580) +++ gcc/sched-deps.c (working copy) @@ -2750,7 +2750,8 @@ sched_analyze_2 (struct deps_desc *deps, Consider for instance a volatile asm that changes the fpu rounding mode. An insn should not be moved across this even if it only uses pseudo-regs because it might give an incorrectly rounded result. */ - if (code != ASM_OPERANDS || MEM_VOLATILE_P (x)) + if ((code != ASM_OPERANDS || MEM_VOLATILE_P (x)) + && !DEBUG_INSN_P (insn)) reg_pending_barrier = TRUE_BARRIER; /* For all ASM_OPERANDS, we must traverse the vector of input operands.