[gcc-6] 342/401: * Fix PR target/79044 (PPC), ICE (Bill Schmidt). Closes: #850777.

Ximin Luo infinity0 at debian.org
Wed Apr 5 15:50:35 UTC 2017


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.

commit e3f442c66180d430bd4970366e987019cbb1b0a6
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date:   Thu Jan 12 12:29:49 2017 +0000

      * Fix PR target/79044 (PPC), ICE (Bill Schmidt). Closes: #850777.
    
    
    git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@9222 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
 debian/changelog            | 12 ++++----
 debian/patches/pr79044.diff | 71 +++++++++++++++++++++++++++++++++++++++++++++
 debian/rules.patch          |  1 +
 3 files changed, 79 insertions(+), 5 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 32d7110..dd06682 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,16 +1,18 @@
 gcc-6 (6.3.0-3) UNRELEASED; urgency=medium
 
   * Update to SVN 20170112 (r244350) from the gcc-6-branch.
-    - Fix PR tree-optimization/71055, PR driver/78863, PR translation/78745,
-      PR tree-optimization/78886, PR tree-optimization/78428,
-      PR libstdc++/78956, PR libstdc++/78991, PR rtl-optimization/78255,
-      PR target/78041 (ARM), PR pch/78970, PR lto/79042, PR target/78900 (PPC),
-      PR tree-optimization/78024, PR sanitizer/65479 (PPC), PR c++/77812.
+    - Fix PR tree-optimization/71055 (closes: #849032), PR driver/78863,
+      PR translation/78745, PR tree-optimization/78886,
+      PR tree-optimization/78428, PR libstdc++/78956, PR libstdc++/78991,
+      PR rtl-optimization/78255, PR target/78041 (ARM), PR pch/78970,
+      PR lto/79042, PR target/78900 (PPC), PR tree-optimization/78024,
+      PR sanitizer/65479 (PPC), PR c++/77812.
   * Always configure sparc builds --with-cpu-32=ultrasparc (James Clark).
     Closes: #850250.
   * Enable gccgo on m68k (John Paul Adrian Glaubitz). Closes: #850749.
   * Reapply the fix for PR target/55947, and fix PR c++/72813, taken from
     the trunk.
+  * Fix PR target/79044 (PPC), ICE (Bill Schmidt). Closes: #850777.
 
  -- Matthias Klose <doko at debian.org>  Thu, 12 Jan 2017 13:04:12 +0100
 
diff --git a/debian/patches/pr79044.diff b/debian/patches/pr79044.diff
new file mode 100644
index 0000000..1e8b235
--- /dev/null
+++ b/debian/patches/pr79044.diff
@@ -0,0 +1,71 @@
+# DP: Fix PR target/79044 (ICE in swap optimization).
+
+gcc/
+
+2017-01-10  Bill Schmidt  <wschmidt at linux.vnet.ibm.com>
+
+	PR target/79044
+	* config/rs6000/rs6000.c (insn_is_swappable_p): Mark
+	element-reversing loads and stores as not swappable.
+
+gcc/testsuite/
+
+2017-01-10  Bill Schmidt  <wschmidt at linux.vnet.ibm.com>
+
+	PR target/79044
+	* gcc.target/powerpc/swaps-p8-26.c: New.
+
+
+--- a/src/gcc/config/rs6000/rs6000.c
++++ b/src/gcc/config/rs6000/rs6000.c
+@@ -38657,6 +38657,12 @@ insn_is_swappable_p (swap_web_entry *insn_entry, r
+     {
+       if (GET_CODE (body) == SET)
+ 	{
++	  rtx rhs = SET_SRC (body);
++	  /* Even without a swap, the RHS might be a vec_select for, say,
++	     a byte-reversing load.  */
++	  if (GET_CODE (rhs) != MEM)
++	    return 0;
++
+ 	  *special = SH_NOSWAP_LD;
+ 	  return 1;
+ 	}
+@@ -38668,6 +38674,12 @@ insn_is_swappable_p (swap_web_entry *insn_entry, r
+     {
+       if (GET_CODE (body) == SET && GET_CODE (SET_SRC (body)) != UNSPEC)
+ 	{
++	  rtx lhs = SET_DEST (body);
++	  /* Even without a swap, the LHS might be a vec_select for, say,
++	     a byte-reversing store.  */
++	  if (GET_CODE (lhs) != MEM)
++	    return 0;
++
+ 	  *special = SH_NOSWAP_ST;
+ 	  return 1;
+ 	}
+--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
+@@ -0,0 +1,21 @@
++/* { dg-do compile { target { powerpc64le-*-* } } } */
++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
++/* { dg-options "-mcpu=power8 -O3 " } */
++/* { dg-final { scan-assembler-times "lxvw4x" 2 } } */
++/* { dg-final { scan-assembler "stxvw4x" } } */
++/* { dg-final { scan-assembler-not "xxpermdi" } } */
++
++/* Verify that swap optimization does not interfere with element-reversing
++   loads and stores.  */
++
++/* Test case to resolve PR79044.  */
++
++#include <altivec.h>
++
++void pr79044 (float *x, float *y, float *z)
++{
++  vector float a = __builtin_vec_xl (0, x);
++  vector float b = __builtin_vec_xl (0, y);
++  vector float c = __builtin_vec_mul (a, b);
++  __builtin_vec_xst (c, 0, z);
++}
+
diff --git a/debian/rules.patch b/debian/rules.patch
index aca35ca..397dfe3 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -109,6 +109,7 @@ debian_patches += \
 	CVE-2016-9842 \
 	CVE-2016-9843 \
 	pr72813 \
+	pr79044 \
 
 ifeq ($(libstdcxx_abi),new)
   debian_patches += libstdc++-functexcept

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git



More information about the Reproducible-commits mailing list