[PATCH] string: Drop always_inline from tst-xbzero-opt [BZ #23130]
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Fri Sep 25 13:03:57 GMT 2026
On 25/09/26 07:43, Stian Halseth wrote:
> Hi,
>
> This fixes the tst-xbzero-opt build break on RISC-V from a066c5d7d; no
> comments since it went out on Monday.
>
> Adhemerval, could you push it? I do not have commit access. Andreas, if
> you can confirm it builds on RISC-V, that would be good to have on the
> record.
>
> Best regards,
> Stian
I have pushed this on master, thanks!
>
>
> On Mon, 2026-09-21 at 22:39 +0200, Stian Halseth wrote:
>> Commit a066c5d7d keeps always_inline on prepare_test_buffer unless
>> the
>> compiler lacks indirect_return, as a proxy for swapcontext not being
>> returns_twice. GCC has indirect_return on RISC-V, which uses the
>> generic bits/indirect-return.h, so the test asks to inline a caller
>> of
>> a returns_twice function and fails to build:
>>
>> tst-xbzero-opt.c:122:1: error: function 'prepare_test_buffer' can
>> never be inlined because it uses setjmp
>>
>> Remove the attribute and the condition around it.
>>
>> Tested on x86_64 and sparc64.
>>
>> Reported-by: Andreas Schwab <schwab@suse.de>
>> Signed-off-by: Stian Halseth <stian@itx.no>
>> ---
>> string/tst-xbzero-opt.c | 9 +--------
>> 1 file changed, 1 insertion(+), 8 deletions(-)
>>
>> diff --git a/string/tst-xbzero-opt.c b/string/tst-xbzero-opt.c
>> index 26e2ec1c13..dfe0d39879 100644
>> --- a/string/tst-xbzero-opt.c
>> +++ b/string/tst-xbzero-opt.c
>> @@ -111,14 +111,7 @@ use_test_buffer (unsigned char *buf)
>> /* Always check the test buffer immediately after filling it; this
>> makes externally visible side effects depend on the buffer
>> existing
>> and having been filled in. */
>> -#if !__glibc_has_attribute (__indirect_return__)
>> -/* Without indirect_return, swapcontext is marked returns_twice,
>> which
>> - prevents always_inline from working. */
>> -# define ALWAYS_INLINE
>> -#else
>> -# define ALWAYS_INLINE __attribute__ ((always_inline))
>> -#endif
>> -static inline ALWAYS_INLINE void
>> +static inline void
>> prepare_test_buffer (unsigned char *buf)
>> {
>> for (unsigned int i = 0; i < PATTERN_REPS; i++)
More information about the Libc-alpha
mailing list