diff options
-rw-r--r-- | gnu-system.am | 1 | ||||
-rw-r--r-- | gnu/packages/gcc.scm | 3 | ||||
-rw-r--r-- | gnu/packages/patches/gcc-fix-pr61801.patch | 25 |
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. |