summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/test/tasking
diff options
context:
space:
mode:
authorJonathan Peyton <jonathan.l.peyton@intel.com>2016-06-21 19:12:07 +0000
committerJonathan Peyton <jonathan.l.peyton@intel.com>2016-06-21 19:12:07 +0000
commitc76f9f0df81de05e19e15a7c756d50b413cddbb9 (patch)
tree522c2e54607c0e6e963a084b06f37dad23904bed /openmp/runtime/test/tasking
parent93b4b2e386209aa353091240c591ebeefae45bed (diff)
downloadbcm5719-llvm-c76f9f0df81de05e19e15a7c756d50b413cddbb9.tar.gz
bcm5719-llvm-c76f9f0df81de05e19e15a7c756d50b413cddbb9.zip
Bug fix for hang when tasks used in nested parallel
Bug fix for hang when omp task and nested parallelism used together. Still some problem remains with task state saving/restoring, but user's case works fine now. All tasking unit tests passed as well. Patch by Andrey Churbanov Differential Revision: http://reviews.llvm.org/D21558 llvm-svn: 273297
Diffstat (limited to 'openmp/runtime/test/tasking')
-rw-r--r--openmp/runtime/test/tasking/nested_parallel_tasking.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/openmp/runtime/test/tasking/nested_parallel_tasking.c b/openmp/runtime/test/tasking/nested_parallel_tasking.c
new file mode 100644
index 00000000000..4374d6ecda2
--- /dev/null
+++ b/openmp/runtime/test/tasking/nested_parallel_tasking.c
@@ -0,0 +1,32 @@
+// RUN: %libomp-compile-and-run
+#include <stdio.h>
+#include <omp.h>
+
+/*
+ * This test would hang when level instead of active level
+ * used to push task state.
+ */
+
+int main()
+{
+ // If num_threads is changed to a value greater than 1, then the test passes
+ #pragma omp parallel num_threads(1)
+ {
+ #pragma omp parallel
+ printf("Hello World from thread %d\n", omp_get_thread_num());
+ }
+
+ printf("omp_num_threads: %d\n", omp_get_max_threads());
+
+ #pragma omp parallel
+ {
+ #pragma omp master
+ #pragma omp task default(none)
+ {
+ printf("%d is executing this task\n", omp_get_thread_num());
+ }
+ }
+
+ printf("pass\n");
+ return 0;
+}
OpenPOWER on IntegriCloud