[llvm-branch-commits] [openmp] r318171 - Merging r309875:
Tom Stellard via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Nov 14 11:11:04 PST 2017
Author: tstellar
Date: Tue Nov 14 11:11:04 2017
New Revision: 318171
URL: http://llvm.org/viewvc/llvm-project?rev=318171&view=rev
Log:
Merging r309875:
------------------------------------------------------------------------
r309875 | jlpeyton | 2017-08-02 13:06:32 -0700 (Wed, 02 Aug 2017) | 11 lines
Move lock acquire/release functions in task deque cleanup code
The original locations can be reached without initializing the lock variable
(td_deque_lock), so it is potentially unsafe. It is guaranteed that the lock
is initialized if the deque (td_deque) is not NULL, and lock functions can be
safely called.
Patch by Hansang Bae
Differential Revision: https://reviews.llvm.org/D36017
------------------------------------------------------------------------
Modified:
openmp/branches/release_50/runtime/src/kmp_tasking.cpp
Modified: openmp/branches/release_50/runtime/src/kmp_tasking.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/branches/release_50/runtime/src/kmp_tasking.cpp?rev=318171&r1=318170&r2=318171&view=diff
==============================================================================
--- openmp/branches/release_50/runtime/src/kmp_tasking.cpp (original)
+++ openmp/branches/release_50/runtime/src/kmp_tasking.cpp Tue Nov 14 11:11:04 2017
@@ -2504,14 +2504,13 @@ static void __kmp_realloc_task_deque(kmp
// Deallocates a task deque for a particular thread. Happens at library
// deallocation so don't need to reset all thread data fields.
static void __kmp_free_task_deque(kmp_thread_data_t *thread_data) {
- __kmp_acquire_bootstrap_lock(&thread_data->td.td_deque_lock);
-
if (thread_data->td.td_deque != NULL) {
+ __kmp_acquire_bootstrap_lock(&thread_data->td.td_deque_lock);
TCW_4(thread_data->td.td_deque_ntasks, 0);
__kmp_free(thread_data->td.td_deque);
thread_data->td.td_deque = NULL;
+ __kmp_release_bootstrap_lock(&thread_data->td.td_deque_lock);
}
- __kmp_release_bootstrap_lock(&thread_data->td.td_deque_lock);
#ifdef BUILD_TIED_TASK_STACK
// GEH: Figure out what to do here for td_susp_tied_tasks
More information about the llvm-branch-commits
mailing list