1 // RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp -x c -emit-llvm %s -o - | FileCheck %s 2 // RUN: %clang_cc1 -fopenmp -x c -triple x86_64-apple-darwin10 -emit-pch -o %t %s 3 // RUN: %clang_cc1 -fopenmp -x c -triple x86_64-apple-darwin10 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s 4 5 // RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp-simd -x c -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s 6 // RUN: %clang_cc1 -fopenmp-simd -x c -triple x86_64-apple-darwin10 -emit-pch -o %t %s 7 // RUN: %clang_cc1 -fopenmp-simd -x c -triple x86_64-apple-darwin10 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY0 %s 8 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 9 // expected-no-diagnostics 10 #ifndef HEADER 11 #define HEADER 12 13 void foo(); 14 15 // CHECK-LABEL: @main 16 int main() { 17 // CHECK: call i32 @__kmpc_global_thread_num( 18 // CHECK: call i8* @__kmpc_omp_task_alloc( 19 // CHECK: call i32 @__kmpc_omp_task( 20 #pragma omp task 21 { 22 #pragma omp taskgroup 23 { 24 #pragma omp task 25 foo(); 26 } 27 } 28 // CHECK: ret i32 0 29 return 0; 30 } 31 // CHECK: call void @__kmpc_taskgroup( 32 // CHECK: call i8* @__kmpc_omp_task_alloc( 33 // CHECK: call i32 @__kmpc_omp_task( 34 // CHECK: call void @__kmpc_end_taskgroup( 35 36 // CHECK-LINE: @bar 37 void bar() { 38 // CHECK: call void @__kmpc_for_static_init_4( 39 #pragma omp for 40 for (int i = 0; i < 10; ++i) 41 // CHECK: [[BUF:%.+]] = call i8* @__kmpc_omp_task_alloc(%struct.ident_t* @{{.+}}, i32 %{{.+}}, i32 1, i64 48, 42 // CHECK: [[BC_BUF:%.+]] = bitcast i8* [[BUF]] to [[TT_WITH_PRIVS:%.+]]* 43 // CHECK: [[PRIVS:%.+]] = getelementptr inbounds [[TT_WITH_PRIVS]], [[TT_WITH_PRIVS]]* [[BC_BUF]], i32 0, i32 1 44 // CHECK: [[I_PRIV:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}} [[PRIVS]], i32 0, i32 0 45 // CHECK: store i32 %{{.+}}, i32* [[I_PRIV]], 46 // CHECK: = call i32 @__kmpc_omp_task(%struct.ident_t* @{{.+}}, i32 %{{.+}}, i8* [[BUF]]) 47 #pragma omp task 48 ++i; 49 } 50 #endif 51