summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2016-11-15 14:26:49 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2016-11-15 14:26:49 +0000
commita3283d64fef21d0ba999679b21ecfaecde3a5376 (patch)
treed0fbece639d5cb1b67b28374336b487eddb89e77 /test
parent91a680c7a245ca2417fec9236673a16f713e335c (diff)
Merging r286944:
------------------------------------------------------------------------ r286944 | abataev | 2016-11-15 09:11:50 +0000 (Tue, 15 Nov 2016) | 6 lines [OPENMP] Fixed codegen for 'omp cancel' construct. If 'omp cancel' construct is used in a worksharing construct it may cause hanging of the software in case if reduction clause is used. Patch fixes this problem by avoiding extra reduction processing for branches that were canceled. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_39@286968 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/OpenMP/cancel_codegen.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/test/OpenMP/cancel_codegen.cpp b/test/OpenMP/cancel_codegen.cpp
index 8234193e8f..059a8d3901 100644
--- a/test/OpenMP/cancel_codegen.cpp
+++ b/test/OpenMP/cancel_codegen.cpp
@@ -91,9 +91,11 @@ for (int i = 0; i < argc; ++i) {
}
}
// CHECK: call void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(
-#pragma omp parallel for
+int r = 0;
+#pragma omp parallel for reduction(+:r)
for (int i = 0; i < argc; ++i) {
#pragma omp cancel for
+ r += i;
}
// CHECK: call void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(
return argc;
@@ -164,6 +166,9 @@ for (int i = 0; i < argc; ++i) {
// CHECK: [[CONTINUE]]
// CHECK: br label
// CHECK: call void @__kmpc_for_static_fini(
+// CHECK: call i32 @__kmpc_reduce_nowait(
+// CHECK: call void @__kmpc_end_reduce_nowait(
+// CHECK: call void @__kmpc_for_static_fini(
// CHECK: ret void
#endif