| int main(int argc, char** argv) { |
| #pragma omp TGT1_DIRECTIVE |
| { |
| #ifdef LOOP_DIRECTIVE |
| #pragma omp LOOP_DIRECTIVE |
| for (int i = 0; i < argc; ++i) |
| #endif |
| { |
| #ifdef BODY_DIRECTIVE |
| #pragma omp BODY_DIRECTIVE |
| { |
| } |
| #endif |
| } |
| } |
| |
| #ifdef TGT2_DIRECTIVE |
| #pragma omp TGT2_DIRECTIVE |
| { |
| #ifdef LOOP_DIRECTIVE |
| #pragma omp LOOP_DIRECTIVE |
| for (int i = 0; i < argc; ++i) |
| #endif |
| { |
| #ifdef BODY_DIRECTIVE |
| #pragma omp BODY_DIRECTIVE |
| { |
| } |
| #endif |
| } |
| } |
| #endif |
| } |
| |
| // Check for an empty kernel (IR level) |
| // FIRST: define weak_odr {{.*}} void @__omp_offloading_{{.*}}_main |
| // FIRST-NEXT: ret void |
| |
| // Check for two empty kernels (IR level) |
| // SECOND: define weak_odr {{.*}} void @__omp_offloading_{{.*}}_main |
| // SECOND-NEXT: ret void |