/usr/src/gcc-4.7/debian/patches/pr61801.diff is in gcc-4.7-source 4.7.4-3ubuntu12.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | # DP: Fix PR rtl-optimization/61801.
gcc/
2014-07-17 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.
gcc/testsuite/
2014-07-28 Richard Biener <rguenther@suse.de>
PR rtl-optimization/61801
* gcc.target/i386/pr61801.c: Fix testcase.
2014-07-28 Richard Biener <rguenther@suse.de>
PR rtl-optimization/61801
* gcc.target/i386/pr61801.c: New testcase.
--- a/src/gcc/sched-deps.c
+++ a/src/gcc/sched-deps.c
@@ -2744,7 +2744,8 @@
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.
--- a/src/gcc/testsuite/gcc.target/i386/pr61801.c
+++ b/src/gcc/testsuite/gcc.target/i386/pr61801.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fcompare-debug" } */
+
+int a, b, c;
+void fn1 ()
+{
+ int d;
+ if (fn2 () && !0)
+ {
+ b = (
+ {
+ int e;
+ fn3 ();
+ switch (0)
+ default:
+ asm volatile("" : "=a"(e) : "0"(a), "i"(0));
+ e;
+ });
+ d = b;
+ }
+ c = d;
+}
|