54 lines · c
1// RUN: %clang_cc1 -verify -x c -triple x86_64-unknown-linux-gnu -fopenmp -fopenmp-version=52 -emit-llvm -o - %s | FileCheck %s2// expected-no-diagnostics3 4#define N 1005int A[N];6 7void condlastprivate() {8 int x, y, z, k;9 x = y = z = k = 0;10 11 #pragma omp parallel for lastprivate(conditional: x,y,z) lastprivate(k)12 for (k = 0; k < N; k++) {13 if ((k > 2) && (k < 6)) {14 x = A[k];15 z = A[k] + 111;16 } else {17 y = A[k] + 222;18 }19 }20}21 22int main() {23 for (int i = 0; i < N; i++)24 A[i] = i;25 condlastprivate();26 return 0;27}28 29// CHECK: @.pl_cond.x_[[ID:[0-9]+]].iv = common global i32 0, align 430// CHECK: @pl_cond.x_[[ID]] = common global i32 0, align 431// CHECK: @.gomp_critical_user_pl_cond.x_[[ID]].var = common global [8 x i32] zeroinitializer, align 832 33// CHECK: @.pl_cond.z_[[ID]].iv = common global i32 0, align 434// CHECK: @pl_cond.z_[[ID]] = common global i32 0, align 435// CHECK: @.gomp_critical_user_pl_cond.z_[[ID]].var = common global [8 x i32] zeroinitializer, align 836 37// CHECK: @.pl_cond.y_[[ID]].iv = common global i32 0, align 438// CHECK: @pl_cond.y_[[ID]] = common global i32 0, align 439// CHECK: @.gomp_critical_user_pl_cond.y_[[ID]].var = common global [8 x i32] zeroinitializer, align 840 41// CHECK-LABEL: define internal void @condlastprivate.omp_outlined(42// CHECK: call void @__kmpc_critical(ptr @2, {{.*}}, ptr @.gomp_critical_user_pl_cond.x_[[ID]].var)43// CHECK: store i32 %{{[0-9]+}}, ptr @pl_cond.x_[[ID]], align 444// CHECK: call void @__kmpc_end_critical(ptr @2, {{.*}}, ptr @.gomp_critical_user_pl_cond.x_[[ID]].var)45 46// CHECK: call void @__kmpc_critical(ptr @2, {{.*}}, ptr @.gomp_critical_user_pl_cond.z_[[ID]].var)47// CHECK: store i32 %{{[0-9]+}}, ptr @pl_cond.z_[[ID]], align 448// CHECK: call void @__kmpc_end_critical(ptr @2, {{.*}}, ptr @.gomp_critical_user_pl_cond.z_[[ID]].var)49 50// CHECK: call void @__kmpc_critical(ptr @2, {{.*}}, ptr @.gomp_critical_user_pl_cond.y_[[ID]].var)51// CHECK: store i32 %{{[0-9]+}}, ptr @pl_cond.y_[[ID]], align 452// CHECK: call void @__kmpc_end_critical(ptr @2, {{.*}}, ptr @.gomp_critical_user_pl_cond.y_[[ID]].var)53 54