[libcxx] Fix a data race in call_once
authorKuba Brecka <kuba.brecka@gmail.com>
Sun, 4 Sep 2016 09:55:12 +0000 (09:55 +0000)
committerKuba Brecka <kuba.brecka@gmail.com>
Sun, 4 Sep 2016 09:55:12 +0000 (09:55 +0000)
commit224264ade0674f8ce120432614abfd880323f105
tree3f61523a69c3dab582196d1c5a887ee392262a95
parentccd44939ef93dae2822fbfc6ff6eb3d2376ad2f2
[libcxx] Fix a data race in call_once

call_once is using relaxed atomic load to perform double-checked locking, which contains a data race. The fast-path load has to be an acquire atomic load.

Differential Revision: https://reviews.llvm.org/D24028

llvm-svn: 280621
libcxx/include/memory
libcxx/include/mutex
libcxx/src/mutex.cpp