[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
This commit is contained in:
Tom de Vries 2018-02-07 10:37:55 +00:00 committed by Tom de Vries
parent 26a823f03b
commit c31bc4ac37
7 changed files with 58 additions and 0 deletions

View file

@ -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

View file

@ -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)
{

View file

@ -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

View file

@ -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)
;
}

View file

@ -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

View file

@ -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>

View file

@ -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;
}