72 lines · c
1// RUN: %clang_cc1 -verify -fopenmp -x c -triple x86_64-unknown-linux -emit-llvm %s -o - | FileCheck %s2// RUN: %clang_cc1 -verify -fopenmp -x c -triple aarch64-unknown-linux -emit-llvm %s -o - | FileCheck %s3// RUN: %clang_cc1 -verify -fopenmp -x c -triple ppc64le-unknown-linux -emit-llvm %s -o - | FileCheck %s4// expected-no-diagnostics5 6#ifndef HEADER7#define HEADER8 9void bar(void);10 11void foo(void) {12#pragma omp metadirective when(implementation = {vendor(score(0) \13 : llvm)}, \14 device = {kind(cpu)} \15 : parallel) default(target teams)16 bar();17#pragma omp metadirective when(device = {kind(gpu)} \18 : target teams) when(implementation = {vendor(llvm)} \19 : parallel) default()20 bar();21#pragma omp metadirective default(target) when(implementation = {vendor(score(5) \22 : llvm)}, \23 device = {kind(cpu, host)} \24 : parallel)25 bar();26#pragma omp metadirective when(implementation = {extension(match_all)} \27 : parallel) default(parallel for)28 for (int i = 0; i < 100; i++)29 ;30#pragma omp metadirective when(implementation = {extension(match_any)} \31 : parallel) default(parallel for)32 for (int i = 0; i < 100; i++)33 ;34#pragma omp metadirective when(implementation = {extension(match_none)} \35 : parallel) default(parallel for)36 for (int i = 0; i < 100; i++)37 ;38}39 40// CHECK: void @foo()41// CHECK-COUNT-6: ...) @__kmpc_fork_call(42// CHECK: ret void43 44// CHECK: define internal void @foo.omp_outlined(45// CHECK: @bar46// CHECK: ret void47 48// CHECK: define internal void @foo.omp_outlined.1(49// CHECK: @bar50// CHECK: ret void51 52// CHECK: define internal void @foo.omp_outlined.2(53// CHECK: @bar54// CHECK: ret void55 56// CHECK: define internal void @foo.omp_outlined.3(57// NO-CHECK: call void @__kmpc_for_static_init58// NO-CHECK: call void @__kmpc_for_static_fini59// CHECK: ret void60 61// CHECK: define internal void @foo.omp_outlined.4(62// CHECK: call void @__kmpc_for_static_init63// CHECK: call void @__kmpc_for_static_fini64// CHECK: ret void65 66// CHECK: define internal void @foo.omp_outlined.5(67// NO-CHECK: call void @__kmpc_for_static_init68// NO-CHECK: call void @__kmpc_for_static_fini69// CHECK: ret void70 71#endif72