URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 816 |
Rev 826 |
// PR c++/38348
|
// PR c++/38348
|
// { dg-do run }
|
// { dg-do run }
|
|
|
extern "C" void abort ();
|
extern "C" void abort ();
|
int cnt;
|
int cnt;
|
|
|
template
|
template
|
void
|
void
|
f0 (T, int)
|
f0 (T, int)
|
{
|
{
|
abort ();
|
abort ();
|
}
|
}
|
|
|
template <>
|
template <>
|
void
|
void
|
f0 (int, int type)
|
f0 (int, int type)
|
{
|
{
|
if (type != 0)
|
if (type != 0)
|
abort ();
|
abort ();
|
#pragma omp atomic
|
#pragma omp atomic
|
cnt++;
|
cnt++;
|
}
|
}
|
|
|
template <>
|
template <>
|
void
|
void
|
f0 (const char *, int type)
|
f0 (const char *, int type)
|
{
|
{
|
if (type != 1)
|
if (type != 1)
|
abort ();
|
abort ();
|
#pragma omp atomic
|
#pragma omp atomic
|
cnt++;
|
cnt++;
|
}
|
}
|
|
|
template
|
template
|
void
|
void
|
f1 ()
|
f1 ()
|
{
|
{
|
#pragma omp parallel for
|
#pragma omp parallel for
|
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
f0 (i, 0);
|
f0 (i, 0);
|
}
|
}
|
|
|
template
|
template
|
void
|
void
|
f2 ()
|
f2 ()
|
{
|
{
|
#pragma omp parallel for
|
#pragma omp parallel for
|
for (T i = T (0); i < T (10); i += T (1))
|
for (T i = T (0); i < T (10); i += T (1))
|
f0 (i, 0);
|
f0 (i, 0);
|
}
|
}
|
|
|
void
|
void
|
f3 ()
|
f3 ()
|
{
|
{
|
#pragma omp parallel for
|
#pragma omp parallel for
|
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
f0 (i, 0);
|
f0 (i, 0);
|
}
|
}
|
|
|
const char *p = "abcdefghij";
|
const char *p = "abcdefghij";
|
|
|
template
|
template
|
void
|
void
|
f4 ()
|
f4 ()
|
{
|
{
|
#pragma omp parallel for
|
#pragma omp parallel for
|
for (const char *i = p; i < p + 10; i += 1)
|
for (const char *i = p; i < p + 10; i += 1)
|
f0 (i, 1);
|
f0 (i, 1);
|
}
|
}
|
|
|
template
|
template
|
void
|
void
|
f5 ()
|
f5 ()
|
{
|
{
|
#pragma omp parallel for
|
#pragma omp parallel for
|
for (T i = T (p); i < T (p + 10); i += 1)
|
for (T i = T (p); i < T (p + 10); i += 1)
|
f0 (i, 1);
|
f0 (i, 1);
|
}
|
}
|
|
|
void
|
void
|
f6 ()
|
f6 ()
|
{
|
{
|
#pragma omp parallel for
|
#pragma omp parallel for
|
for (const char *i = p; i < p + 10; i++)
|
for (const char *i = p; i < p + 10; i++)
|
f0 (i, 1);
|
f0 (i, 1);
|
}
|
}
|
|
|
int
|
int
|
main ()
|
main ()
|
{
|
{
|
f1 ();
|
f1 ();
|
if (cnt != 10)
|
if (cnt != 10)
|
abort ();
|
abort ();
|
f2 ();
|
f2 ();
|
if (cnt != 20)
|
if (cnt != 20)
|
abort ();
|
abort ();
|
f3 ();
|
f3 ();
|
if (cnt != 30)
|
if (cnt != 30)
|
abort ();
|
abort ();
|
f4 ();
|
f4 ();
|
if (cnt != 40)
|
if (cnt != 40)
|
abort ();
|
abort ();
|
f5 ();
|
f5 ();
|
if (cnt != 50)
|
if (cnt != 50)
|
abort ();
|
abort ();
|
f6 ();
|
f6 ();
|
if (cnt != 60)
|
if (cnt != 60)
|
abort ();
|
abort ();
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.