mirror of git://gcc.gnu.org/git/gcc.git
Fix diff_type in expand_oacc_for char iter_type
2017-08-07 Tom de Vries <tom@codesourcery.com> PR middle-end/78266 * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough. * testsuite/libgomp.oacc-c-c++-common/vprop-2.c: New test. * testsuite/libgomp.oacc-c-c++-common/vprop.c: Remove xfail. From-SVN: r250925
This commit is contained in:
parent
58fccd6c21
commit
f4c222c035
|
|
@ -1,3 +1,8 @@
|
|||
2017-08-07 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
PR middle-end/78266
|
||||
* omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
|
||||
|
||||
2017-08-07 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* config/mips/mips.c: Include attribs.h.
|
||||
|
|
|
|||
|
|
@ -5328,6 +5328,8 @@ expand_oacc_for (struct omp_region *region, struct omp_for_data *fd)
|
|||
}
|
||||
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;
|
||||
|
||||
basic_block entry_bb = region->entry; /* BB ending in OMP_FOR */
|
||||
basic_block exit_bb = region->exit; /* BB ending in OMP_RETURN */
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
2017-08-07 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
PR middle-end/78266
|
||||
* testsuite/libgomp.oacc-c-c++-common/vprop-2.c: New test.
|
||||
* testsuite/libgomp.oacc-c-c++-common/vprop.c: Remove xfail.
|
||||
|
||||
2017-07-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/45784
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#define DO_PRAGMA(x) _Pragma (#x)
|
||||
|
||||
#define test(idx,type,ngangs) \
|
||||
void \
|
||||
test_##idx () \
|
||||
{ \
|
||||
int b[100]; \
|
||||
\
|
||||
for (unsigned int i = 0; i < 100; i++) \
|
||||
b[i] = 0; \
|
||||
\
|
||||
DO_PRAGMA(acc parallel num_gangs (ngangs) copy (b)) \
|
||||
{ \
|
||||
_Pragma("acc loop gang") \
|
||||
for (type j = 0; j < 5; j++) \
|
||||
{ \
|
||||
_Pragma("acc loop vector") \
|
||||
for (unsigned int i = 0; i < 20; i++) \
|
||||
b[j * 20 + i] = -2; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
for (unsigned int i = 0; i < 100; i++) \
|
||||
assert (b[i] == -2); \
|
||||
}
|
||||
|
||||
test (0, signed char, 256)
|
||||
test (1, unsigned char, 256)
|
||||
test (2, signed short, 65535)
|
||||
test (3, unsigned short, 65535)
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
test_0 ();
|
||||
test_1 ();
|
||||
test_2 ();
|
||||
test_3 ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
/* { dg-do run } */
|
||||
/* { dg-xfail-run-if "PR78266" { openacc_nvidia_accel_selected } } */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue