Index: openmp/trunk/runtime/src/kmp_barrier.cpp =================================================================== --- openmp/trunk/runtime/src/kmp_barrier.cpp +++ openmp/trunk/runtime/src/kmp_barrier.cpp @@ -706,6 +706,8 @@ thr_bar->offset = 7-(tid-thr_bar->parent_tid-1); thr_bar->old_tid = tid; thr_bar->wait_flag = KMP_BARRIER_NOT_WAITING; + thr_bar->team = team; + thr_bar->parent_bar = &team->t.t_threads[thr_bar->parent_tid]->th.th_bar[bt].bb; } if (uninitialized || team_changed || tid_changed) { thr_bar->team = team; @@ -1122,6 +1124,10 @@ //KMP_DEBUG_ASSERT( is_split == TRUE ); // #C69956 this_thr->th.th_local.reduce_data = reduce_data; } + + if (KMP_MASTER_TID(tid) && __kmp_tasking_mode != tskm_immediate_exec) + __kmp_task_team_setup(this_thr, team, 0); // use 0 to only setup the current team if nthreads > 1 + switch (__kmp_barrier_gather_pattern[bt]) { case bp_hyper_bar: { KMP_ASSERT(__kmp_barrier_gather_branch_bits[bt]); // don't set branch bits to 0; use linear @@ -1153,7 +1159,6 @@ if (__kmp_tasking_mode != tskm_immediate_exec) { __kmp_task_team_wait(this_thr, team USE_ITT_BUILD_ARG(itt_sync_obj) ); - __kmp_task_team_setup(this_thr, team, 0); // use 0 to only setup the current team if nthreads > 1 } #if USE_DEBUGGER // Let the debugger know: All threads are arrived and starting leaving the barrier. Index: openmp/trunk/runtime/src/kmp_tasking.c =================================================================== --- openmp/trunk/runtime/src/kmp_tasking.c +++ openmp/trunk/runtime/src/kmp_tasking.c @@ -2403,7 +2403,6 @@ KMP_DEBUG_ASSERT( task_team -> tt.tt_next == NULL ); task_team -> tt.tt_next = __kmp_free_task_teams; - TCW_4(task_team -> tt.tt_found_tasks, FALSE); TCW_PTR(__kmp_free_task_teams, task_team); __kmp_release_bootstrap_lock( & __kmp_task_team_lock );