diff options
| author | Jordan Rupprecht <rupprecht@google.com> | 2021-06-15 07:55:23 -0700 |
|---|---|---|
| committer | Jordan Rupprecht <rupprecht@google.com> | 2021-06-15 07:55:23 -0700 |
| commit | 6d33362dafb66b3af4717990d9a06450ec13f367 (patch) | |
| tree | 0bed2c011c5a24c06a9bd6b1aa37807db6fa8262 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | |
| parent | e893708aac04ece90fd85681c289f1a3b09b52e5 (diff) | |
[libcxx][atomic] Fix failure mapping in compare_exchange_{strong,weak}.
https://eel.is/c++draft/atomics.types.operations#23 says: ... the value of failure is order except that a value of `memory_order::acq_rel` shall be replaced by the value `memory_order::acquire` and a value of `memory_order::release` shall be replaced by the value `memory_order::relaxed`.
This failure mapping is only handled for `_LIBCPP_HAS_GCC_ATOMIC_IMP`. We are seeing bad code generation for `compare_exchange_strong(cmp, 1, std::memory_order_acq_rel)` when using libc++ in place of libstdc++: https://godbolt.org/z/v3onrrq4G.
This was caught by tsan tests after D99434, `[TSAN] Honor failure memory orders in AtomicCAS`, but appears to be an issue in non-tsan code.
Reviewed By: ldionne, dvyukov
Differential Revision: https://reviews.llvm.org/D103846
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
0 files changed, 0 insertions, 0 deletions
