diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-08-10 11:51:43 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-08-10 11:51:43 +0300 |
commit | 124c97a9ab14735334850e57379e08d0d2c089d8 (patch) | |
tree | fd01d2eaaf14f7fbaacd1cda3c8770271108b1b3 /.travis.yml | |
parent | 620ae9dd25faf62e96063c5440a0be648ae29d46 (diff) | |
download | libatomic_ops-124c97a9ab14735334850e57379e08d0d2c089d8.tar.gz |
Fix AO_compare_and_swap_full asm code for clang on sparc
Issue #52 (libatomic_ops).
The issue (SIGSEGV in test_malloc) is observed with clang-13, at least.
The workaround is to simplify asm code of AO_compare_and_swap_full
(moving the comparison of CAS result and old value to C code).
* src/atomic_ops/sysdeps/gcc/sparc.h [(!(AO_GNUC_PREREQ(12,0)
|| AO_CLANG_PREREQ(13,0)) || AO_DISABLE_GCC_ATOMICS) && !AO_NO_SPARC_V9
&& !AO_GENERALIZE_ASM_BOOL_CAS] (AO_compare_and_swap_full): Remove ret
local variable; remove cmp, be, mov, clr instructions from asm block
(to match that of AO_fetch_compare_and_swap_full); remove cc from asm
block clobbers; change specifier for old input operand of asm block
(from "0" to "r"); return new_val==old instead of ret.
Diffstat (limited to '.travis.yml')
0 files changed, 0 insertions, 0 deletions