URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.c++/] [atomic-1.C] - Rev 735
Compare with Previous | Blame | View Log
// PR c++/33894
// { dg-do run }
// { dg-options "-O2" }
extern "C" void abort ();
int check;
template<typename T> void
foo ()
{
#pragma omp atomic
check |= sizeof (T);
}
template<typename T> void
bar (T *x, T y)
{
#pragma omp atomic
*x += y;
}
template<typename T> void
baz ()
{
#pragma omp atomic
check++;
}
int
main ()
{
int i = 0;
long l = 0;
check = 0;
foo<char> ();
if (check != sizeof (char))
abort ();
foo<short> ();
if (check != (sizeof (char) | sizeof (short)))
abort ();
bar(&i, 4);
bar(&l, 8L);
if (i != 4 || l != 8L)
abort ();
baz<char> ();
if (check != (sizeof (char) | sizeof (short)) + 1)
abort ();
baz<long double> ();
if (check != (sizeof (char) | sizeof (short)) + 2)
abort ();
}