diff options
author | Matias Elo <matias.elo@nokia.com> | 2021-10-12 12:21:22 +0300 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2021-10-21 10:53:20 +0300 |
commit | 28912cee034067ad15914a0caec3e3067b04284e (patch) | |
tree | 5602873970f47aaac56331b69a6a7a0f93a386be /platform/linux-generic/arch/aarch64 | |
parent | 42d0383b7346b787995275d67b469135489add15 (diff) |
linux-gen: fix unsupported types build errors
Fix "ISO C does not support '__int128' types" errors when building with
'pedantic' option.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'platform/linux-generic/arch/aarch64')
-rw-r--r-- | platform/linux-generic/arch/aarch64/odp_atomic.h | 8 | ||||
-rw-r--r-- | platform/linux-generic/arch/aarch64/odp_llsc.h | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/platform/linux-generic/arch/aarch64/odp_atomic.h b/platform/linux-generic/arch/aarch64/odp_atomic.h index c7a28fc2c..445d91e28 100644 --- a/platform/linux-generic/arch/aarch64/odp_atomic.h +++ b/platform/linux-generic/arch/aarch64/odp_atomic.h @@ -36,6 +36,10 @@ do { \ #define LL_MO(mo) (HAS_ACQ((mo)) ? __ATOMIC_ACQUIRE : __ATOMIC_RELAXED) #define SC_MO(mo) (HAS_RLS((mo)) ? __ATOMIC_RELEASE : __ATOMIC_RELAXED) +/* Prevent warnings about ISO C not supporting __int128 */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #ifndef __ARM_FEATURE_QRDMX /* Feature only available in v8.1a and beyond */ static inline bool __lockfree_compare_exchange_16(register __int128 *var, __int128 *exp, @@ -219,7 +223,7 @@ static inline __int128 __lockfree_load_16(__int128 *var, int mo) return old; } -typedef unsigned __int128 _u128_t; +__extension__ typedef unsigned __int128 _u128_t; static inline _u128_t lockfree_load_u128(_u128_t *atomic) { @@ -291,6 +295,8 @@ static inline bitset_t bitset_mask(uint32_t bit) return (unsigned __int128)(1ULL << (bit - 64)) << 64; } +#pragma GCC diagnostic pop + #else #error Unsupported size of bit sets (ATOM_BITSET_SIZE) #endif diff --git a/platform/linux-generic/arch/aarch64/odp_llsc.h b/platform/linux-generic/arch/aarch64/odp_llsc.h index cf55be132..45a534100 100644 --- a/platform/linux-generic/arch/aarch64/odp_llsc.h +++ b/platform/linux-generic/arch/aarch64/odp_llsc.h @@ -115,11 +115,11 @@ static inline uint32_t sc(uint64_t *var, uint64_t neu, int mm) #define sc64(a, b, c) sc((a), (b), (c)) union i128 { - __int128 i128; + __extension__ __int128 i128; int64_t i64[2]; }; -static inline __int128 lld(__int128 *var, int mm) +__extension__ static inline __int128 lld(__int128 *var, int mm) { union i128 old; @@ -139,7 +139,7 @@ static inline __int128 lld(__int128 *var, int mm) } /* Return 0 on success, 1 on failure */ -static inline uint32_t scd(__int128 *var, __int128 neu, int mm) +__extension__ static inline uint32_t scd(__int128 *var, __int128 neu, int mm) { uint32_t ret; |