mirror of
https://github.com/autc04/Retro68.git
synced 2024-12-02 18:53:22 +00:00
60 lines
926 B
C
60 lines
926 B
C
/* { dg-additional-options "-fno-tree-switch-conversion" } */
|
|
|
|
#pragma omp declare target
|
|
int
|
|
foo (unsigned a)
|
|
{
|
|
switch (a)
|
|
{
|
|
case 1 ... 5:
|
|
return 1;
|
|
case 9 ... 11:
|
|
return a + 3;
|
|
case 12 ... 13:
|
|
return a + 3;
|
|
default:
|
|
return 44;
|
|
}
|
|
}
|
|
#pragma omp end declare target
|
|
|
|
#define s 100
|
|
|
|
void __attribute__((noinline, noclone))
|
|
verify(int *a)
|
|
{
|
|
if (a[0] != 44)
|
|
__builtin_abort ();
|
|
|
|
for (int i = 1; i <= 5; i++)
|
|
if (a[i] != 1)
|
|
__builtin_abort ();
|
|
|
|
for (int i = 6; i <= 8; i++)
|
|
if (a[i] != 44)
|
|
__builtin_abort ();
|
|
|
|
for (int i = 9; i <= 13; i++)
|
|
if (a[i] != i + 3)
|
|
__builtin_abort ();
|
|
|
|
for (int i = 14; i < s; i++)
|
|
if (a[i] != 44)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
int main(int argc)
|
|
{
|
|
int array[s];
|
|
#pragma omp target
|
|
{
|
|
for (int i = 0; i < s; i++)
|
|
{
|
|
int v = foo (i);
|
|
array[i] = v;
|
|
}
|
|
}
|
|
verify (array);
|
|
return 0;
|
|
}
|