| /* { dg-do compile } */ |
| /* { dg-additional-options "-fdump-tree-gimple" } */ |
| |
| int f (int a, void *b, float c[2]); |
| |
| #pragma omp declare variant (f) match (construct={dispatch}) adjust_args (nothing: a) adjust_args (need_device_ptr: b, c) |
| int f0 (int a, void *b, float c[2]); |
| #pragma omp declare variant (f) adjust_args (need_device_ptr: b, c) match (construct={dispatch}) adjust_args (nothing: a) |
| int f1 (int a, void *b, float c[2]); |
| |
| void test () { |
| int a; |
| void *b; |
| float c[2]; |
| |
| #pragma omp dispatch |
| f0 (a, b, c); |
| |
| #pragma omp dispatch device (-4852) |
| f0 (a, b, c); |
| |
| #pragma omp dispatch device (a + a) |
| f0 (a, b, c); |
| } |
| |
| /* { dg-final { scan-tree-dump-times "__builtin_omp_get_default_device \\(\\);" 3 "gimple" } } */ |
| /* { dg-final { scan-tree-dump-times "D\.\[0-9]+ = __builtin_omp_get_mapped_ptr \\(&c, D\.\[0-9]+\\);" 2 "gimple" } } */ |
| /* { dg-final { scan-tree-dump-times "D\.\[0-9]+ = __builtin_omp_get_mapped_ptr \\(b, D\.\[0-9]+\\);" 2 "gimple" } } */ |
| /* { dg-final { scan-tree-dump-times "D\.\[0-9]+ = __builtin_omp_get_mapped_ptr \\(&c, -4852\\);" 1 "gimple" } } */ |
| /* { dg-final { scan-tree-dump-times "D\.\[0-9]+ = __builtin_omp_get_mapped_ptr \\(b, -4852\\);" 1 "gimple" } } */ |
| /* { dg-final { scan-tree-dump-not "#pragma omp dispatch device" "gimple" } } */ |