Message ID | 20230501204625.277361-1-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | qemu/int128: Re-shuffle Int128Alias members | expand |
Richard Henderson <richard.henderson@linaro.org> writes: > Clang 14, with --enable-tcg-interpreter errors with > > include/qemu/int128.h:487:16: error: alignment of field 'i' (128 bits) > does not match the alignment of the first field in transparent union; > transparent_union attribute ignored [-Werror,-Wignored-attributes] > __int128_t i; > ^ > include/qemu/int128.h:486:12: note: alignment of first field is 64 bits > Int128 s; > ^ > 1 error generated. > > By placing the __uint128_t member first, this is avoided. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
On 5/2/23 09:44, Alex Bennée wrote: > > Richard Henderson <richard.henderson@linaro.org> writes: > >> Clang 14, with --enable-tcg-interpreter errors with >> >> include/qemu/int128.h:487:16: error: alignment of field 'i' (128 bits) >> does not match the alignment of the first field in transparent union; >> transparent_union attribute ignored [-Werror,-Wignored-attributes] >> __int128_t i; >> ^ >> include/qemu/int128.h:486:12: note: alignment of first field is 64 bits >> Int128 s; >> ^ >> 1 error generated. >> >> By placing the __uint128_t member first, this is avoided. >> >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > Queued to tcg-next. r~
diff --git a/include/qemu/int128.h b/include/qemu/int128.h index f62a46b48c..9e46cfaefc 100644 --- a/include/qemu/int128.h +++ b/include/qemu/int128.h @@ -483,9 +483,9 @@ static inline void bswap128s(Int128 *s) */ #ifdef CONFIG_INT128 typedef union { - Int128 s; - __int128_t i; __uint128_t u; + __int128_t i; + Int128 s; } Int128Alias __attribute__((transparent_union)); #else typedef Int128 Int128Alias;
Clang 14, with --enable-tcg-interpreter errors with include/qemu/int128.h:487:16: error: alignment of field 'i' (128 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Werror,-Wignored-attributes] __int128_t i; ^ include/qemu/int128.h:486:12: note: alignment of first field is 64 bits Int128 s; ^ 1 error generated. By placing the __uint128_t member first, this is avoided. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- include/qemu/int128.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)