mirror of
https://github.com/autc04/Retro68.git
synced 2024-11-19 18:46:30 +00:00
59 lines
1.0 KiB
C
59 lines
1.0 KiB
C
// PR libgomp/69555
|
|
// { dg-do run }
|
|
|
|
__attribute__((noinline, noclone)) void
|
|
f1 (int y)
|
|
{
|
|
int a[y - 2];
|
|
int (&c)[y - 2] = a;
|
|
for (int i = 0; i < y - 2; i++)
|
|
c[i] = i + 4;
|
|
|
|
#pragma omp target firstprivate (c)
|
|
{
|
|
for (int i = 0; i < y - 2; i++)
|
|
{
|
|
if (c[i] != i + 4)
|
|
__builtin_abort ();
|
|
c[i] = i + 9;
|
|
}
|
|
asm volatile ("" : : "r" (&c[0]) : "memory");
|
|
for (int i = 0; i < y - 2; i++)
|
|
if (c[i] != i + 9)
|
|
__builtin_abort ();
|
|
}
|
|
for (int i = 0; i < y - 2; i++)
|
|
if (c[i] != i + 4)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
__attribute__((noinline, noclone)) void
|
|
f2 (int y)
|
|
{
|
|
int a[y - 2];
|
|
int (&c)[y - 2] = a;
|
|
for (int i = 0; i < y - 2; i++)
|
|
c[i] = i + 4;
|
|
|
|
#pragma omp target private (c)
|
|
{
|
|
for (int i = 0; i < y - 2; i++)
|
|
c[i] = i + 9;
|
|
asm volatile ("" : : "r" (&c[0]) : "memory");
|
|
for (int i = 0; i < y - 2; i++)
|
|
if (c[i] != i + 9)
|
|
__builtin_abort ();
|
|
}
|
|
for (int i = 0; i < y - 2; i++)
|
|
if (c[i] != i + 4)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
f1 (6);
|
|
f2 (6);
|
|
return 0;
|
|
}
|