blob: bf146dd236595b885c1109c1de25ded1f207a4ad [file] [log] [blame]
/* { dg-additional-options "-foffload=disable" } */
/* Check that variants within a "begin declare variant" directive
are attached to the correct overloaded function. */
int f (int x) { return x; }
#pragma omp begin declare variant match (implementation={vendor("gnu")})
int f (int x) { return -1; }
#pragma omp end declare variant
int f (int x, int y) { return x * y; }
#pragma omp begin declare variant match (construct={target})
int f (int x, int y) { return -2; }
#pragma omp end declare variant
int f (int x, int y, int z) { return x * y * z; }
#pragma omp begin declare variant match (device={kind("host")})
int f (int x, int y, int z) { return -3; }
#pragma omp end declare variant
int main (void)
{
if (f (10) != -1) __builtin_abort ();
if (f (10, 20) != 200) __builtin_abort (); /* no match on this one */
if (f (10, 20, 30) != -3) __builtin_abort ();
}