blob: 9eecfbbe77d461d541798ffe6044febaadb36ea4 [file] [log] [blame]
// PR c++/33894
// { dg-do run }
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 ();
}