"clang/lib/git@repo.hca.bsc.es:rferrer/llvm-epi-0.8.git" did not exist on "e1c2ad8aa716a7af74d5a3cbaea1fe01d0a2d309"
[compiler-rt] Fix atomic support functions on 32-bit architectures
The code currently uses __c11_atomic_is_lock_free() to detect whether an atomic operation is natively supported. However, this can result in a runtime function call to determine whether the given operation is lock-free and clang generating a call to e.g. __atomic_load_8 since the branch is not a constant zero. Since we are implementing those runtime functions, we must avoid those calls. This patch replaces __c11_atomic_is_lock_free() with __atomic_always_lock_free() which always results in a compile-time constant value. This problem was found while compiling atomic.c for MIPS32 since the -Watomic-alignment warning was being triggered and objdump showed an undefined reference to _atomic_is_lock_free. In addition to fixing 32-bit platforms this also enables the 16-byte case that was disabled in r153779 (185f2edd). Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D86510
Loading
Please sign in to comment