summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/for_lastprivate_codegen.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2015-05-08 10:41:21 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2015-05-08 10:41:21 +0000
commit39f915b8f4981d6bba38a15d6169129062808b03 (patch)
treefcc72d4da32fefce6ac5090538db9af30fab03db /clang/test/OpenMP/for_lastprivate_codegen.cpp
parent307b9176967c4a6c07a63fe54294a1911fd8b1c0 (diff)
downloadbcm5719-llvm-39f915b8f4981d6bba38a15d6169129062808b03.tar.gz
bcm5719-llvm-39f915b8f4981d6bba38a15d6169129062808b03.zip
[OPENMP] Code cleanup for capturing of variables in OpenMP regions.
llvm-svn: 236821
Diffstat (limited to 'clang/test/OpenMP/for_lastprivate_codegen.cpp')
-rw-r--r--clang/test/OpenMP/for_lastprivate_codegen.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/clang/test/OpenMP/for_lastprivate_codegen.cpp b/clang/test/OpenMP/for_lastprivate_codegen.cpp
index 7d3337a2553..3aee293ecb6 100644
--- a/clang/test/OpenMP/for_lastprivate_codegen.cpp
+++ b/clang/test/OpenMP/for_lastprivate_codegen.cpp
@@ -18,6 +18,7 @@ struct S {
};
volatile int g = 1212;
+float f;
// CHECK: [[S_FLOAT_TY:%.+]] = type { float }
// CHECK: [[CAP_MAIN_TY:%.+]] = type { i{{[0-9]+}}*, [2 x i{{[0-9]+}}]*, [2 x [[S_FLOAT_TY]]]*, [[S_FLOAT_TY]]* }
@@ -25,6 +26,7 @@ volatile int g = 1212;
// CHECK: [[CAP_TMAIN_TY:%.+]] = type { i{{[0-9]+}}*, [2 x i{{[0-9]+}}]*, [2 x [[S_INT_TY]]]*, [[S_INT_TY]]* }
// CHECK-DAG: [[IMPLICIT_BARRIER_LOC:@.+]] = private unnamed_addr constant %{{.+}} { i32 0, i32 66, i32 0, i32 0, i8*
// CHECK-DAG: [[X:@.+]] = global double 0.0
+// CHECK-DAG: [[F:@.+]] = global float 0.0
template <typename T>
T tmain() {
S<T> test;
@@ -167,7 +169,7 @@ int main() {
s_arr[i] = var;
}
#pragma omp parallel
-#pragma omp for lastprivate(A::x, B::x)
+#pragma omp for lastprivate(A::x, B::x) firstprivate(f) lastprivate(f)
for (int i = 0; i < 2; ++i) {
A::x++;
}
@@ -255,11 +257,17 @@ int main() {
//
// CHECK: define internal void [[MAIN_MICROTASK1]](i{{[0-9]+}}* [[GTID_ADDR:%.+]], i{{[0-9]+}}* %{{.+}}, %{{.+}}* %{{.+}})
+// CHECK: [[F_PRIV:%.+]] = alloca float,
+// CHECK-NOT: alloca float
// CHECK: [[X_PRIV:%.+]] = alloca double,
+// CHECK-NOT: alloca float
// CHECK-NOT: alloca double
// Check for default initialization.
// CHECK-NOT: [[X_PRIV]]
+// CHECK: [[F_VAL:%.+]] = load float, float* [[F]],
+// CHECK: store float [[F_VAL]], float* [[F_PRIV]],
+// CHECK-NOT: [[X_PRIV]]
// CHECK: [[GTID_REF:%.+]] = load i{{[0-9]+}}*, i{{[0-9]+}}** [[GTID_ADDR_REF]]
// CHECK: [[GTID:%.+]] = load i{{[0-9]+}}, i{{[0-9]+}}* [[GTID_REF]]
@@ -277,6 +285,11 @@ int main() {
// original x=private_x;
// CHECK: [[X_VAL:%.+]] = load double, double* [[X_PRIV]],
// CHECK: store double [[X_VAL]], double* [[X]],
+
+// original f=private_f;
+// CHECK: [[F_VAL:%.+]] = load float, float* [[F_PRIV]],
+// CHECK: store float [[F_VAL]], float* [[F]],
+
// CHECK-NEXT: br label %[[LAST_DONE]]
// CHECK: [[LAST_DONE]]
OpenPOWER on IntegriCloud