1*876b5ea9SSaiyedul Islam // RUN: %clang_cc1 -verify -w -fopenmp -x c++ -triple x86_64-unknown-linux -emit-llvm %s -fexceptions -fcxx-exceptions -o - -fsanitize-address-use-after-scope | FileCheck %s 2*876b5ea9SSaiyedul Islam // expected-no-diagnostics 3*876b5ea9SSaiyedul Islam 4*876b5ea9SSaiyedul Islam #ifndef HEADER 5*876b5ea9SSaiyedul Islam #define HEADER 6*876b5ea9SSaiyedul Islam 7*876b5ea9SSaiyedul Islam void bar(); 8*876b5ea9SSaiyedul Islam x86_64_device_isa_selected()9*876b5ea9SSaiyedul Islamvoid x86_64_device_isa_selected() { 10*876b5ea9SSaiyedul Islam #pragma omp metadirective when(device = {isa("sse2")} \ 11*876b5ea9SSaiyedul Islam : parallel) default(single) 12*876b5ea9SSaiyedul Islam bar(); 13*876b5ea9SSaiyedul Islam } 14*876b5ea9SSaiyedul Islam // CHECK-LABEL: void @_Z26x86_64_device_isa_selectedv() 15*876b5ea9SSaiyedul Islam // CHECK: ...) @__kmpc_fork_call{{.*}}@.omp_outlined. 16*876b5ea9SSaiyedul Islam // CHECK: ret void 17*876b5ea9SSaiyedul Islam 18*876b5ea9SSaiyedul Islam // CHECK: define internal void @.omp_outlined.( 19*876b5ea9SSaiyedul Islam // CHECK: @_Z3barv 20*876b5ea9SSaiyedul Islam // CHECK: ret void 21*876b5ea9SSaiyedul Islam x86_64_device_isa_not_selected()22*876b5ea9SSaiyedul Islamvoid x86_64_device_isa_not_selected() { 23*876b5ea9SSaiyedul Islam #pragma omp metadirective when(device = {isa("some-unsupported-feature")} \ 24*876b5ea9SSaiyedul Islam : parallel) default(single) 25*876b5ea9SSaiyedul Islam bar(); 26*876b5ea9SSaiyedul Islam } 27*876b5ea9SSaiyedul Islam // CHECK-LABEL: void @_Z30x86_64_device_isa_not_selectedv() 28*876b5ea9SSaiyedul Islam // CHECK: call i32 @__kmpc_single 29*876b5ea9SSaiyedul Islam // CHECK: @_Z3barv 30*876b5ea9SSaiyedul Islam // CHECK: call void @__kmpc_end_single 31*876b5ea9SSaiyedul Islam // CHECK: ret void 32*876b5ea9SSaiyedul Islam #endif 33