ca431befaa
2015-06-15 Tom de Vries <tom@codesourcery.com> * testsuite/libgomp.c/atomic-18.c: Remove superfluous -fopenmp setting in dg-options. * testsuite/libgomp.c/atomic-3.c: Same. * testsuite/libgomp.c/debug-1.c: Same. * testsuite/libgomp.c/nqueens-1.c: Same. * testsuite/libgomp.c/pr26171.c: Same. * testsuite/libgomp.c/pr48591.c: Same. * testsuite/libgomp.c/pr64824.c: Same. * testsuite/libgomp.c/pr64868.c: Same. * testsuite/libgomp.c/pr66133.c: Same. * testsuite/libgomp.c/pr66199-1.c: Same. * testsuite/libgomp.c/pr66199-2.c: Same. * testsuite/libgomp.c/target-8.c: Same. From-SVN: r224480
51 lines
847 B
C
51 lines
847 B
C
/* { dg-do run } */
|
|
/* { dg-options "-O0" } */
|
|
|
|
#include <omp.h>
|
|
#include <stdlib.h>
|
|
|
|
short e[64];
|
|
int g;
|
|
_Complex double d, f;
|
|
int num_threads;
|
|
|
|
__attribute__((noinline)) void
|
|
foo (int x, long long y)
|
|
{
|
|
#pragma omp parallel num_threads (4)
|
|
{
|
|
int i;
|
|
#pragma omp barrier
|
|
for (i = 0; i < 2400; i++)
|
|
{
|
|
if (i == 0)
|
|
num_threads = omp_get_num_threads ();
|
|
#pragma omp atomic
|
|
e[0] += x;
|
|
#pragma omp atomic
|
|
e[16] += x;
|
|
#pragma omp atomic
|
|
g += y;
|
|
#pragma omp atomic
|
|
__real__ d += x;
|
|
#pragma omp atomic
|
|
__imag__ f += x;
|
|
}
|
|
}
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
int i;
|
|
foo (3, 3LL);
|
|
if (g != 3 * 2400 * num_threads
|
|
|| __real__ d != g || __imag__ d != 0
|
|
|| __real__ f != 0 || __imag__ f != g)
|
|
abort ();
|
|
for (i = 0; i < 64; i++)
|
|
if (e[i] != ((i && i != 16) ? 0 : g))
|
|
abort ();
|
|
return 0;
|
|
}
|