aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-11-20 20:50:46 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-11-20 20:50:46 +0100
commit48a78aee68fe0d88f01fcdef61782b4f8008f651 (patch)
treec24052cb2cd36bcb89e5c282738b57518e6c0e94
parent9a784760f136a97e6cc39816788ca4ddff0193af (diff)
downloadgcc-48a78aee68fe0d88f01fcdef61782b4f8008f651.zip
gcc-48a78aee68fe0d88f01fcdef61782b4f8008f651.tar.gz
gcc-48a78aee68fe0d88f01fcdef61782b4f8008f651.tar.bz2
re PR middle-end/68221 (libgomp reduction-11/12 failures)
PR middle-end/68221 * omp-low.c (lower_rec_input_clauses): If C/C++ array reduction has non-zero bias, subtract it in integer type instead of pointer plus of negated bias. * testsuite/libgomp.c/reduction-11.c: Remove xfail. * testsuite/libgomp.c/reduction-12.c: Likewise. * testsuite/libgomp.c++/reduction-11.C: Likewise. * testsuite/libgomp.c++/reduction-12.C: Likewise. From-SVN: r230672
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/omp-low.c12
-rw-r--r--libgomp/ChangeLog8
-rw-r--r--libgomp/testsuite/libgomp.c++/reduction-11.C2
-rw-r--r--libgomp/testsuite/libgomp.c++/reduction-12.C2
-rw-r--r--libgomp/testsuite/libgomp.c/reduction-11.c2
-rw-r--r--libgomp/testsuite/libgomp.c/reduction-12.c2
7 files changed, 24 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0b7194b..4d3e5b3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2015-11-20 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/68221
+ * omp-low.c (lower_rec_input_clauses): If C/C++ array reduction
+ has non-zero bias, subtract it in integer type instead of
+ pointer plus of negated bias.
+
PR middle-end/68339
* omp-low.c (expand_simd_clones): Call node->get_body () before
allocating stuff in GC.
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 0b6630b..b47864e 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -4444,11 +4444,13 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
if (!integer_zerop (bias))
{
- bias = fold_convert_loc (clause_loc, sizetype, bias);
- bias = fold_build1_loc (clause_loc, NEGATE_EXPR,
- sizetype, bias);
- x = fold_build2_loc (clause_loc, POINTER_PLUS_EXPR,
- TREE_TYPE (x), x, bias);
+ bias = fold_convert_loc (clause_loc, pointer_sized_int_node,
+ bias);
+ yb = fold_convert_loc (clause_loc, pointer_sized_int_node,
+ x);
+ yb = fold_build2_loc (clause_loc, MINUS_EXPR,
+ pointer_sized_int_node, yb, bias);
+ x = fold_convert_loc (clause_loc, TREE_TYPE (x), yb);
yb = create_tmp_var (ptype, name);
gimplify_assign (yb, x, ilist);
x = yb;
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 2fff11b..7de19b0 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,11 @@
+2015-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/68221
+ * testsuite/libgomp.c/reduction-11.c: Remove xfail.
+ * testsuite/libgomp.c/reduction-12.c: Likewise.
+ * testsuite/libgomp.c++/reduction-11.C: Likewise.
+ * testsuite/libgomp.c++/reduction-12.C: Likewise.
+
2015-11-19 Nathan Sidwell <nathan@codesourcery.com>
* libgomp.oacc-c-c++-common/reduction-dbl.c: New.
diff --git a/libgomp/testsuite/libgomp.c++/reduction-11.C b/libgomp/testsuite/libgomp.c++/reduction-11.C
index 588cc5f..67c7320 100644
--- a/libgomp/testsuite/libgomp.c++/reduction-11.C
+++ b/libgomp/testsuite/libgomp.c++/reduction-11.C
@@ -1,4 +1,4 @@
-// { dg-do run { xfail *-*-* } }
+// { dg-do run }
char z[10] = { 0 };
diff --git a/libgomp/testsuite/libgomp.c++/reduction-12.C b/libgomp/testsuite/libgomp.c++/reduction-12.C
index 744798a..1495549 100644
--- a/libgomp/testsuite/libgomp.c++/reduction-12.C
+++ b/libgomp/testsuite/libgomp.c++/reduction-12.C
@@ -1,4 +1,4 @@
-// { dg-do run { xfail *-*-* } }
+// { dg-do run }
template <typename T>
struct A
diff --git a/libgomp/testsuite/libgomp.c/reduction-11.c b/libgomp/testsuite/libgomp.c/reduction-11.c
index 594dc67..264c6fc 100644
--- a/libgomp/testsuite/libgomp.c/reduction-11.c
+++ b/libgomp/testsuite/libgomp.c/reduction-11.c
@@ -1,4 +1,4 @@
-/* { dg-do run { xfail *-*-* } } */
+/* { dg-do run } */
char z[10] = { 0 };
diff --git a/libgomp/testsuite/libgomp.c/reduction-12.c b/libgomp/testsuite/libgomp.c/reduction-12.c
index 1c9c4f3..97c5766 100644
--- a/libgomp/testsuite/libgomp.c/reduction-12.c
+++ b/libgomp/testsuite/libgomp.c/reduction-12.c
@@ -1,4 +1,4 @@
-/* { dg-do run { xfail *-*-* } } */
+/* { dg-do run } */
struct A { int t; };
struct B { char t; };