diff mbox series

qemu/int128: Re-shuffle Int128Alias members

Message ID 20230501204625.277361-1-richard.henderson@linaro.org
State Superseded
Headers show
Series qemu/int128: Re-shuffle Int128Alias members | expand

Commit Message

Richard Henderson May 1, 2023, 8:46 p.m. UTC
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(-)

Comments

Alex Bennée May 2, 2023, 8:44 a.m. UTC | #1
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>
Richard Henderson May 2, 2023, 10:30 a.m. UTC | #2
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 mbox series

Patch

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;