From d3f2b94d97789590c101ea7e512588deec80c288 Mon Sep 17 00:00:00 2001 From: Jonathan Peyton Date: Tue, 9 Feb 2016 22:32:41 +0000 Subject: [PATCH] Proxy task fix: task_state stack push condition on fork The problem is that the master's thread state was not saved before entering a parallel region so it does not remember tasks when it returns. llvm-svn: 260306 --- openmp/runtime/src/kmp_runtime.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openmp/runtime/src/kmp_runtime.c b/openmp/runtime/src/kmp_runtime.c index 2f7d3e9..8801ed8 100644 --- a/openmp/runtime/src/kmp_runtime.c +++ b/openmp/runtime/src/kmp_runtime.c @@ -2093,7 +2093,8 @@ __kmp_fork_call( KA_TRACE( 20, ( "__kmp_fork_call: Master T#%d pushing task_team %p / team %p, new task_team %p / team %p\n", __kmp_gtid_from_thread( master_th ), master_th->th.th_task_team, parent_team, team->t.t_task_team[master_th->th.th_task_state], team ) ); - if (level) { + + if ( level || master_th->th.th_task_team ) { // Take a memo of master's task_state KMP_DEBUG_ASSERT(master_th->th.th_task_state_memo_stack); if (master_th->th.th_task_state_top >= master_th->th.th_task_state_stack_sz) { // increase size -- 2.7.4