87 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -x c++ -emit-llvm %s -o - | FileCheck %s2// expected-no-diagnostics3#ifndef HEADER4#define HEADER5 6int global;7#define VECTOR_SIZE 48 9int main (int argc, char **argv) {10 int i,n;11 int x;12 13 n = VECTOR_SIZE;14 15 #pragma omp parallel masked firstprivate(x) num_threads(2)16 {17 int *xPtr = nullptr;18 // scalar19 #pragma omp task default(shared:scalar)20 {21 xPtr = &x;22 }23 #pragma omp taskwait24 25 // pointer26 #pragma omp task default(shared:pointer) shared(x)27 {28 xPtr = &x;29 }30 #pragma omp taskwait31 }32 33 int *aggregate[VECTOR_SIZE] = {0,0,0,0};34 35 #pragma omp parallel masked num_threads(2)36 {37 // aggregate38 #pragma omp task default(shared:aggregate)39 for(i=0;i<n;i++) {40 aggregate[i] = &x;41 }42 #pragma omp taskwait43 44 #pragma omp task default(shared:aggregate) shared(x)45 for(i=0;i<n;i++) {46 aggregate[i] = &x;47 }48 #pragma omp taskwait49 50 // all51 #pragma omp task default(shared:all)52 for(i=0;i<n;i++) {53 aggregate[i] = &x;54 }55 #pragma omp taskwait56 }57}58 59#endif60 61// CHECK-LABEL: define {{.*}}main.omp_outlined{{.*}}62// CHECK: store ptr null, ptr{{.*}}63// CHECK-NEXT: {{.*}}getelementptr {{.*}}64// CHECK-NEXT: store ptr {{.*}}65// CHECK-NEXT: {{.*}}getelementptr {{.*}}66// CHECK-NEXT: store ptr {{.*}}67// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}68// CHECK: ret void69//70// CHECK: define {{.*}}main.omp_outlined{{.*}}71// CHECK: {{.*}}getelementptr {{.*}}72// CHECK-NEXT: store ptr {{.*}}73// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}74// CHECK: store ptr {{.*}}75// CHECK-NEXT: {{.*}}getelementptr {{.*}}76// CHECK-NEXT: store ptr {{.*}}77// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}78// CHECK: store ptr {{.*}}79// CHECK-NEXT: {{.*}}getelementptr {{.*}}80// CHECK-NEXT: store ptr {{.*}}81// CHECK-NEXT: {{.*}}getelementptr {{.*}}82// CHECK-NEXT: store ptr {{.*}}83// CHECK-NEXT: {{.*}}getelementptr {{.*}}84// CHECK-NEXT: store ptr {{.*}}85// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}86// CHECK: ret void87