[PATCH] qemu/int128: Re-shuffle Int128Alias members

Richard Henderson posted 1 patch 1 year ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230501204625.277361-1-richard.henderson@linaro.org
include/qemu/int128.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] qemu/int128: Re-shuffle Int128Alias members
Posted by Richard Henderson 1 year ago
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(-)

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;
-- 
2.34.1
Re: [PATCH] qemu/int128: Re-shuffle Int128Alias members
Posted by Alex Bennée 1 year ago
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>

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH] qemu/int128: Re-shuffle Int128Alias members
Posted by Richard Henderson 1 year ago
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~