aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2018-02-07 10:37:55 +0000
committerTom de Vries <vries@gcc.gnu.org>2018-02-07 10:37:55 +0000
commitc31bc4ac378f56593caae12bba086a98d002bb64 (patch)
treedfa3bfa19dcae0483c3e1882e6aa1463d0f22550
parent26a823f03b214ce8412c4a255e483cc81c315bb4 (diff)
downloadgcc-c31bc4ac378f56593caae12bba086a98d002bb64.zip
gcc-c31bc4ac378f56593caae12bba086a98d002bb64.tar.gz
gcc-c31bc4ac378f56593caae12bba086a98d002bb64.tar.bz2
[openacc] Fix diff_type in expand_oacc_collapse_init
2018-02-07 Tom de Vries <tom@codesourcery.com> PR libgomp/84217 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large enough. * c-c++-common/goacc/pr84217.c: New test. * gfortran.dg/goacc/pr84217.f90: New test. * testsuite/libgomp.oacc-c-c++-common/pr84217.c: New test. From-SVN: r257443
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/omp-expand.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/c-c++-common/goacc/pr84217.c8
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/pr84217.f909
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c22
7 files changed, 58 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7fc5914..1caefb6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-07 Tom de Vries <tom@codesourcery.com>
+
+ PR libgomp/84217
+ * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
+ enough.
+
2018-02-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/84204
diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c
index 90e0631..bb20490 100644
--- a/gcc/omp-expand.c
+++ b/gcc/omp-expand.c
@@ -1433,6 +1433,8 @@ expand_oacc_collapse_init (const struct omp_for_data *fd,
plus_type = sizetype;
if (POINTER_TYPE_P (diff_type) || TYPE_UNSIGNED (diff_type))
diff_type = signed_type_for (diff_type);
+ if (TYPE_PRECISION (diff_type) < TYPE_PRECISION (integer_type_node))
+ diff_type = integer_type_node;
if (tiling)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8506abe..49e52ea 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-07 Tom de Vries <tom@codesourcery.com>
+
+ PR libgomp/84217
+ * c-c++-common/goacc/pr84217.c: New test.
+ * gfortran.dg/goacc/pr84217.f90: New test.
+
2018-02-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/84204
diff --git a/gcc/testsuite/c-c++-common/goacc/pr84217.c b/gcc/testsuite/c-c++-common/goacc/pr84217.c
new file mode 100644
index 0000000..c4f2920
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/pr84217.c
@@ -0,0 +1,8 @@
+void
+foo (void)
+{
+#pragma acc parallel loop tile (2, 3)
+ for (short i = 0; i < 10; ++i)
+ for (short j = 0; j < 10; ++j)
+ ;
+}
diff --git a/gcc/testsuite/gfortran.dg/goacc/pr84217.f90 b/gcc/testsuite/gfortran.dg/goacc/pr84217.f90
new file mode 100644
index 0000000..cee49e9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goacc/pr84217.f90
@@ -0,0 +1,9 @@
+subroutine foo
+ integer(2) :: i, j
+ !$acc parallel loop tile(2,3)
+ do i = 1, 10
+ do j = 1, 10
+ end do
+ end do
+ !$acc end parallel loop
+end
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index da74074..91b47ce 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-07 Tom de Vries <tom@codesourcery.com>
+
+ PR libgomp/84217
+ * testsuite/libgomp.oacc-c-c++-common/pr84217.c: New test.
+
2018-01-29 Christoph Spiel <cspiel@freenet.de>
Jakub Jelinek <jakub@redhat.com>
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c
new file mode 100644
index 0000000..18ff66a
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c
@@ -0,0 +1,22 @@
+extern void abort (void);
+
+#define N 10
+
+int
+main (void)
+{
+ int a[N];
+
+ for (short i = 0; i < N; ++i)
+ a[i] = -1;
+
+#pragma acc parallel loop tile (2)
+ for (short i = 0; i < N; ++i)
+ a[i] = i;
+
+ for (short i = 0; i < N; ++i)
+ if (a[i] != i)
+ abort ();
+
+ return 0;
+}