mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-30 23:35:00 +08:00
re PR middle-end/64734 (ICE at omp lowering)
PR middle-end/64734 * omp-low.c (scan_sharing_clauses): Don't ignore OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION GOMP_MAP_POINTER clauses on target data/update constructs. * libgomp.c/pr64734.c: New test. From-SVN: r220053
This commit is contained in:
parent
8a7261b26c
commit
b891044723
@ -1,3 +1,10 @@
|
||||
2015-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/64734
|
||||
* omp-low.c (scan_sharing_clauses): Don't ignore
|
||||
OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION GOMP_MAP_POINTER clauses
|
||||
on target data/update constructs.
|
||||
|
||||
2015-01-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
PR target/50928
|
||||
|
@ -1834,7 +1834,8 @@ scan_sharing_clauses (tree clauses, omp_context *ctx)
|
||||
/* Ignore GOMP_MAP_POINTER kind for arrays in regions that are
|
||||
not offloaded; there is nothing to map for those. */
|
||||
if (!is_gimple_omp_offloaded (ctx->stmt)
|
||||
&& !POINTER_TYPE_P (TREE_TYPE (decl)))
|
||||
&& !POINTER_TYPE_P (TREE_TYPE (decl))
|
||||
&& !OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION (c))
|
||||
break;
|
||||
}
|
||||
if (DECL_P (decl))
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/64734
|
||||
* libgomp.c/pr64734.c: New test.
|
||||
|
||||
2015-01-23 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
PR libgomp/64672
|
||||
|
55
libgomp/testsuite/libgomp.c/pr64734.c
Normal file
55
libgomp/testsuite/libgomp.c/pr64734.c
Normal file
@ -0,0 +1,55 @@
|
||||
/* PR middle-end/64734 */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
void
|
||||
foo (int *x, int *y)
|
||||
{
|
||||
#pragma omp target map (alloc:x[0]) map (alloc:y[0:8])
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 8; i++)
|
||||
if (y[i] != 2 + i)
|
||||
break;
|
||||
if (i != 8 || *x != 1)
|
||||
*x = 6;
|
||||
else
|
||||
{
|
||||
*x = 8;
|
||||
for (i = 0; i < 8; i++)
|
||||
y[i] = 9 + i;
|
||||
}
|
||||
}
|
||||
#pragma omp target update from (y[0:8]) from (x[0])
|
||||
}
|
||||
|
||||
void
|
||||
bar (void)
|
||||
{
|
||||
int x = 1, y[32] = { 0 };
|
||||
#pragma omp target data map (to:y[0:32]) map (to:x)
|
||||
;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int x = 1, y[8] = { 2, 3, 4, 5, 6, 7, 8, 9 }, i;
|
||||
#pragma omp target data map (to:y[0:8]) map (to:x)
|
||||
;
|
||||
#pragma omp target data map (to:y[0:8]) map (to:x)
|
||||
{
|
||||
#pragma omp target update from (y[0:8]) from (x)
|
||||
}
|
||||
|
||||
#pragma omp target data map (to:y[0:8]) map (to:x)
|
||||
foo (&x, &y[0]);
|
||||
|
||||
if (x != 8)
|
||||
abort ();
|
||||
for (i = 0; i < 8; i++)
|
||||
if (y[i] != 9 + i)
|
||||
abort ();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user