mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 06:49:09 +02:00
libgcc: Use UTItype with mode(TI) for 16-byte atomics
The use of UOItype with mode(OI) for 16-byte atomic operations is non-standard. The OI mode is not defined in machmode.def and exists only as an ad-hoc construct in libgcc/sync.c. This patch replaces it with UTItype using mode(TI), which is the standard GCC machine mode for 16-byte integers (Tetra Integer). The size argument is also corrected from 8 to 16 to match the actual operand width. libgcc/ChangeLog: * sync.c: Replace UOItype with UTItype and use mode(TI) pass 16, not 8, to DEFINE macro. Signed-off-by: Xin Wang <wangxinw@hygon.cn>
This commit is contained in:
committed by
Richard Sandiford
parent
8b7b9d5a0a
commit
022cfc9137
@@ -124,10 +124,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
/* Find an appropriate type TYPE for SIZE and invoke DEFINE (FN, SIZE, TYPE).
|
||||
|
||||
The types chosen here may be incorrect for some targets.
|
||||
For example, targets with 16-byte atomicity support might not
|
||||
support OImode. We would need some kind of target-specific
|
||||
override if that becomes a problem. */
|
||||
The types chosen here are based on standard GCC modes.
|
||||
If a target supports atomic operations for a given SIZE but lacks
|
||||
the corresponding mode, a target-specific override will be needed. */
|
||||
|
||||
#if SIZE == 1 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
|
||||
|
||||
@@ -151,8 +150,8 @@ DEFINE (FN, 8, UDItype)
|
||||
|
||||
#elif SIZE == 16 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
||||
|
||||
typedef unsigned int UOItype __attribute__((mode (OI)));
|
||||
DEFINE (FN, 8, UOItype)
|
||||
typedef unsigned int UTItype __attribute__((mode (TI)));
|
||||
DEFINE (FN, 16, UTItype)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user