aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
diff options
context:
space:
mode:
authorJonathan Peyton <jonathan.l.peyton@intel.com>2018-07-19 19:17:00 +0000
committerJonathan Peyton <jonathan.l.peyton@intel.com>2018-07-19 19:17:00 +0000
commita764af68bef54e61c780fd8ef23879c5dbad0f10 (patch)
treead4e8de4f0dd0664282921faa434132f4e9272db /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
parenta57d7139b3ac3f71bc550a1469e55411a3a716ab (diff)
downloadllvm-a764af68bef54e61c780fd8ef23879c5dbad0f10.zip
llvm-a764af68bef54e61c780fd8ef23879c5dbad0f10.tar.gz
llvm-a764af68bef54e61c780fd8ef23879c5dbad0f10.tar.bz2
Block library shutdown until unreaped threads finish spin-waiting
This change fixes possibly invalid access to the internal data structure during library shutdown. In a heavily oversubscribed situation, the library shutdown sequence can reach the point where resources are deallocated while there still exist threads in their final spinning loop. The added loop in __kmp_internal_end() checks if there are such busy-waiting threads and blocks the shutdown sequence if that is the case. Two versions of kmp_wait_template() are now used to minimize performance impact. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D49452 llvm-svn: 337486
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions