From: Terry Wilmarth Date: Thu, 12 Jan 2023 16:29:20 +0000 (-0600) Subject: [OpenMP] Fix for distributed barrier. X-Git-Tag: upstream/17.0.6~20214 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4c58e5a28f36e214144c4c76754cca666093adf3;p=platform%2Fupstream%2Fllvm.git [OpenMP] Fix for distributed barrier. Distributed barrier was found to cause hangs in some test cases. Found that a section updating the barrier size was improperly shifted to a different code section during patching. Restored to original location, all tests run to completion. Differential Revision: https://reviews.llvm.org/D141618 --- diff --git a/openmp/runtime/src/kmp_runtime.cpp b/openmp/runtime/src/kmp_runtime.cpp index be0f15f..58b5542 100644 --- a/openmp/runtime/src/kmp_runtime.cpp +++ b/openmp/runtime/src/kmp_runtime.cpp @@ -1011,6 +1011,12 @@ static void __kmp_fork_team_threads(kmp_root_t *root, kmp_team_t *team, __kmp_partition_places(team); } #endif + + if (team->t.t_nproc > 1 && + __kmp_barrier_gather_pattern[bs_forkjoin_barrier] == bp_dist_bar) { + team->t.b->update_num_threads(team->t.t_nproc); + __kmp_add_threads_to_team(team, team->t.t_nproc); + } } if (__kmp_display_affinity && team->t.t_display_affinity != 1) { @@ -2479,12 +2485,6 @@ void __kmp_join_call(ident_t *loc, int gtid parent_team->t.t_stack_id = NULL; } #endif - - if (team->t.t_nproc > 1 && - __kmp_barrier_gather_pattern[bs_forkjoin_barrier] == bp_dist_bar) { - team->t.b->update_num_threads(team->t.t_nproc); - __kmp_add_threads_to_team(team, team->t.t_nproc); - } } KMP_MB();