|
|
327152 |
2014-07-17 Richard Biener <rguenther@suse.de>
|
|
|
327152 |
|
|
|
327152 |
PR rtl-optimization/61801
|
|
|
327152 |
* sched-deps.c (sched_analyze_2): For ASM_OPERANDS and
|
|
|
327152 |
ASM_INPUT don't set reg_pending_barrier if it appears in a
|
|
|
327152 |
debug-insn.
|
|
|
327152 |
|
|
|
327152 |
2014-08-06 Jakub Jelinek <jakub@redhat.com>
|
|
|
327152 |
|
|
|
327152 |
PR rtl-optimization/61801
|
|
|
327152 |
* gcc.target/i386/pr61801.c: Rewritten.
|
|
|
327152 |
|
|
|
327152 |
2014-07-28 Richard Biener <rguenther@suse.de>
|
|
|
327152 |
|
|
|
327152 |
PR rtl-optimization/61801
|
|
|
327152 |
* gcc.target/i386/pr61801.c: Fix testcase.
|
|
|
327152 |
|
|
|
327152 |
2014-07-28 Richard Biener <rguenther@suse.de>
|
|
|
327152 |
|
|
|
327152 |
PR rtl-optimization/61801
|
|
|
327152 |
* gcc.target/i386/pr61801.c: New testcase.
|
|
|
327152 |
|
|
|
327152 |
--- gcc/sched-deps.c (revision 212737)
|
|
|
327152 |
+++ gcc/sched-deps.c (revision 212738)
|
|
|
327152 |
@@ -2750,7 +2750,8 @@ sched_analyze_2 (struct deps_desc *deps,
|
|
|
327152 |
Consider for instance a volatile asm that changes the fpu rounding
|
|
|
327152 |
mode. An insn should not be moved across this even if it only uses
|
|
|
327152 |
pseudo-regs because it might give an incorrectly rounded result. */
|
|
|
327152 |
- if (code != ASM_OPERANDS || MEM_VOLATILE_P (x))
|
|
|
327152 |
+ if ((code != ASM_OPERANDS || MEM_VOLATILE_P (x))
|
|
|
327152 |
+ && !DEBUG_INSN_P (insn))
|
|
|
327152 |
reg_pending_barrier = TRUE_BARRIER;
|
|
|
327152 |
|
|
|
327152 |
/* For all ASM_OPERANDS, we must traverse the vector of input operands.
|
|
|
327152 |
--- gcc/testsuite/gcc.target/i386/pr61801.c (revision 0)
|
|
|
327152 |
+++ gcc/testsuite/gcc.target/i386/pr61801.c (revision 213654)
|
|
|
327152 |
@@ -0,0 +1,21 @@
|
|
|
327152 |
+/* PR rtl-optimization/61801 */
|
|
|
327152 |
+/* { dg-do compile } */
|
|
|
327152 |
+/* { dg-options "-Os -fcompare-debug" } */
|
|
|
327152 |
+
|
|
|
327152 |
+int a, c;
|
|
|
327152 |
+int bar (void);
|
|
|
327152 |
+void baz (void);
|
|
|
327152 |
+
|
|
|
327152 |
+void
|
|
|
327152 |
+foo (void)
|
|
|
327152 |
+{
|
|
|
327152 |
+ int d;
|
|
|
327152 |
+ if (bar ())
|
|
|
327152 |
+ {
|
|
|
327152 |
+ int e;
|
|
|
327152 |
+ baz ();
|
|
|
327152 |
+ asm volatile ("" : "=a" (e) : "0" (a), "i" (0));
|
|
|
327152 |
+ d = e;
|
|
|
327152 |
+ }
|
|
|
327152 |
+ c = d;
|
|
|
327152 |
+}
|