This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix PR61801, sched2 vs. debug-insns
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: vmararov at redhat dot com
- Date: Wed, 16 Jul 2014 13:56:52 +0200 (CEST)
- Subject: [PATCH] Fix PR61801, sched2 vs. debug-insns
- Authentication-results: sourceware.org; auth=none
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 <rguenther@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.