[all-commits] [llvm/llvm-project] 067650: [sanitizer_common] Use atomic builtin in sanitizer...
rorth via All-commits
all-commits at lists.llvm.org
Sat Jan 29 13:53:35 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 067650fd12fccf44de1d7c148b50658831c672b0
https://github.com/llvm/llvm-project/commit/067650fd12fccf44de1d7c148b50658831c672b0
Author: Rainer Orth <ro at gcc.gnu.org>
Date: 2022-01-29 (Sat, 29 Jan 2022)
Changed paths:
M compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h
Log Message:
-----------
[sanitizer_common] Use atomic builtin in sanitizer_atomic_clang.h
As discussed in D118021 <https://reviews.llvm.org/D118021>, `clang -m32` on
Solaris/sparcv9 currently incorrectly doesn't inline atomics on 8-byte
operands, unlike `gcc`. With the workaround in that patch in place, we're
left with may undefined references to `__sync_val_compare_and_swap_8`,
which isn't provided by `libatomic`. This reference is due to the use of
`__sync_val_compare_and_swap` in `sanitizer_atomic_clang.h`'s
`atomic_compare_exchange_strong`. As is already done in
`scudo/standalone/atomic_helpers.h`, using `__atomic_compare_exchange`
instead avoids this problem.
Tested on `sparcv9-sun-solaris2.11`, `amd64-pc-solaris2.11`, and
`x86_64-pc-linux-gnu`.
Differential Revision: https://reviews.llvm.org/D118024
More information about the All-commits
mailing list