[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