summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/task_codegen.c
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2019-07-18 17:49:13 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2019-07-18 17:49:13 +0000
commit05be1da24cd947187a8b750e9eca45e80d2e7414 (patch)
treedad30cd82ebcd2240874110eedfbc527bd680824 /clang/test/OpenMP/task_codegen.c
parent3f1ab737e2199415c072fd6624a728949eb30342 (diff)
downloadbcm5719-llvm-05be1da24cd947187a8b750e9eca45e80d2e7414.tar.gz
bcm5719-llvm-05be1da24cd947187a8b750e9eca45e80d2e7414.zip
[OPENMP]Provide correct data sharing attributes for loop control
variables. Loop control variables are private in loop-based constructs and we shall take this into account when generate the code for inner constructs. Currently, those variables are reported as shared in many cases. Moved the analysis of the data-sharing attributes of the loop control variable to an early semantic stage to correctly handle their attributes. llvm-svn: 366474
Diffstat (limited to 'clang/test/OpenMP/task_codegen.c')
-rw-r--r--clang/test/OpenMP/task_codegen.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/OpenMP/task_codegen.c b/clang/test/OpenMP/task_codegen.c
index 6669c7e7361..69718cc6f4d 100644
--- a/clang/test/OpenMP/task_codegen.c
+++ b/clang/test/OpenMP/task_codegen.c
@@ -32,4 +32,19 @@ int main() {
// CHECK: call i8* @__kmpc_omp_task_alloc(
// CHECK: call i32 @__kmpc_omp_task(
// CHECK: call void @__kmpc_end_taskgroup(
+
+// CHECK-LINE: @bar
+void bar() {
+ // CHECK: call void @__kmpc_for_static_init_4(
+#pragma omp for
+for (int i = 0; i < 10; ++i)
+ // CHECK: [[BUF:%.+]] = call i8* @__kmpc_omp_task_alloc(%struct.ident_t* @{{.+}}, i32 %{{.+}}, i32 1, i64 48,
+ // CHECK: [[BC_BUF:%.+]] = bitcast i8* [[BUF]] to [[TT_WITH_PRIVS:%.+]]*
+ // CHECK: [[PRIVS:%.+]] = getelementptr inbounds [[TT_WITH_PRIVS]], [[TT_WITH_PRIVS]]* [[BC_BUF]], i32 0, i32 1
+ // CHECK: [[I_PRIV:%.+]] = getelementptr inbounds %{{.+}}, %{{.+}} [[PRIVS]], i32 0, i32 0
+ // CHECK: store i32 %{{.+}}, i32* [[I_PRIV]],
+ // CHECK: = call i32 @__kmpc_omp_task(%struct.ident_t* @{{.+}}, i32 %{{.+}}, i8* [[BUF]])
+#pragma omp task
+++i;
+}
#endif
OpenPOWER on IntegriCloud