77 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-linux -emit-llvm %s -fexceptions -fcxx-exceptions -o - -fsanitize-address-use-after-scope | FileCheck %s2// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple aarch64-unknown-linux -emit-llvm %s -fexceptions -fcxx-exceptions -o - -fsanitize-address-use-after-scope | FileCheck %s3// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple ppc64le-unknown-linux -emit-llvm %s -fexceptions -fcxx-exceptions -o - -fsanitize-address-use-after-scope | FileCheck %s4// expected-no-diagnostics5 6#ifndef HEADER7#define HEADER8 9void bar();10 11void foo() {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-LABEL: void @_Z3foov()41// CHECK: @__kmpc_fork_call(ptr {{.+}}, i32 0, ptr [[OUTLINED_2:@.+]])42// CHECK: @__kmpc_fork_call(ptr {{.+}}, i32 0, ptr [[OUTLINED_3:@.+]])43// CHECK: @__kmpc_fork_call(ptr {{.+}}, i32 0, ptr [[OUTLINED_4:@.+]])44// CHECK: @__kmpc_fork_call(ptr {{.+}}, i32 0, ptr [[OUTLINED_5:@.+]])45// CHECK: @__kmpc_fork_call(ptr {{.+}}, i32 0, ptr [[OUTLINED_6:@.+]])46// CHECK: @__kmpc_fork_call(ptr {{.+}}, i32 0, ptr [[OUTLINED_7:@.+]])47// CHECK: ret void48 49// CHECK: define internal void [[OUTLINED_2]](50// CHECK: @_Z3barv51// CHECK: ret void52 53// CHECK: define internal void [[OUTLINED_3]](54// CHECK: @_Z3barv55// CHECK: ret void56 57// CHECK: define internal void [[OUTLINED_4]](58// CHECK: @_Z3barv59// CHECK: ret void60 61// CHECK: define internal void [[OUTLINED_5]](62// NO-CHECK: call void @__kmpc_for_static_init63// NO-CHECK: call void @__kmpc_for_static_fini64// CHECK: ret void65 66// CHECK: define internal void [[OUTLINED_6]](67// CHECK: call void @__kmpc_for_static_init68// CHECK: call void @__kmpc_for_static_fini69// CHECK: ret void70 71// CHECK: define internal void [[OUTLINED_7]](72// NO-CHECK: call void @__kmpc_for_static_init73// NO-CHECK: call void @__kmpc_for_static_fini74// CHECK: ret void75 76#endif77