summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/gcc.scm3
-rw-r--r--gnu/packages/patches/gcc-fix-pr61801.patch25
3 files changed, 28 insertions, 1 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 93afd9fb50..7d6763c5ec 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -327,6 +327,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/flex-bison-tests.patch			\
   gnu/packages/patches/gawk-shell.patch				\
   gnu/packages/patches/gcc-cross-environment-variables.patch	\
+  gnu/packages/patches/gcc-fix-pr61801.patch			\
   gnu/packages/patches/gd-mips64-deplibs-fix.patch		\
   gnu/packages/patches/glib-tests-desktop.patch			\
   gnu/packages/patches/glib-tests-homedir.patch			\
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 66888389d4..02601585b9 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -268,7 +268,8 @@ Go.  It also includes runtime support libraries for these languages.")
                                  version "/gcc-" version ".tar.bz2"))
              (sha256
               (base32
-               "07hg10zs7gnqz58my10ch0zygizqh0z0bz6pv4pgxx45n48lz3ka"))))))
+               "07hg10zs7gnqz58my10ch0zygizqh0z0bz6pv4pgxx45n48lz3ka"))
+             (patches (list (search-patch "gcc-fix-pr61801.patch")))))))
 
 (define-public gcc-4.9
   (package (inherit gcc-4.7)
diff --git a/gnu/packages/patches/gcc-fix-pr61801.patch b/gnu/packages/patches/gcc-fix-pr61801.patch
new file mode 100644
index 0000000000..e9cd92aa1c
--- /dev/null
+++ b/gnu/packages/patches/gcc-fix-pr61801.patch
@@ -0,0 +1,25 @@
+GCC bug fix for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801>.
+Initially discussed at
+ <http://lists.gnu.org/archive/html/guix-devel/2014-09/msg00283.html>.
+Patch from <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=212740>.
+
+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-4_8-branch/gcc/sched-deps.c	2014/07/17 07:48:49	212739
++++ gcc-4_8-branch/gcc/sched-deps.c	2014/07/17 07:49:44	212740
+@@ -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.