[PATCH 10/39] tst-atomic.c: Mark as UNSUPPORTED when compiled with Clang
Sam James
sam@gentoo.org
Sun Dec 22 02:54:19 GMT 2024
"H.J. Lu" <hjl.tools@gmail.com> writes:
> Since Clang can't remove the dead statement and issues an error:
>
> tst-atomic.c:463:7: error: unsupported inline asm: input with type 'int64_t' (aka 'long') matching output with type 'typeof (*&mem)' (aka 'int')
> 463 | if (catomic_exchange_and_add (&mem, 11) != 2
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../sysdeps/x86/atomic-machine.h:213:3: note: expanded from macro 'catomic_exchange_and_add'
> 213 | __arch_exchange_and_add_body (__arch_exchange_and_add_cprefix, __arch_c, \
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 214 | mem, value)
> | ~~~~~~~~~~~
> ../sysdeps/x86/atomic-machine.h:199:12: note: expanded from macro '__arch_exchange_and_add_body'
> 198 | : "=r" (__result), "=m" (*mem) \
> | ~~~~~~~~
> 199 | : "0" ((int64_t) cast_to_integer (__addval)), \
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> tst-atomic.c:487:7: error: unsupported inline asm: input with type 'int64_t' (aka 'long') matching output with type 'typeof (*(&mem))' (aka 'int')
> 487 | if (catomic_increment_val (&mem) != 3)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../include/atomic.h:313:38: note: expanded from macro 'catomic_increment_val'
> 313 | # define catomic_increment_val(mem) (catomic_exchange_and_add ((mem), 1) + 1)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../sysdeps/x86/atomic-machine.h:213:3: note: expanded from macro 'catomic_exchange_and_add'
> 213 | __arch_exchange_and_add_body (__arch_exchange_and_add_cprefix, __arch_c, \
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 214 | mem, value)
> | ~~~~~~~~~~~
> ../sysdeps/x86/atomic-machine.h:199:12: note: expanded from macro '__arch_exchange_and_add_body'
> 198 | : "=r" (__result), "=m" (*mem) \
> | ~~~~~~~~
> 199 | : "0" ((int64_t) cast_to_integer (__addval)), \
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> tst-atomic.c:501:7: error: unsupported inline asm: input with type 'int64_t' (aka 'long') matching output with type 'typeof (*(&mem))' (aka 'int')
> 501 | if (catomic_decrement_val (&mem) != 15)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../include/atomic.h:340:38: note: expanded from macro 'catomic_decrement_val'
> 340 | # define catomic_decrement_val(mem) (catomic_exchange_and_add ((mem), -1) - 1)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../sysdeps/x86/atomic-machine.h:213:3: note: expanded from macro 'catomic_exchange_and_add'
> 213 | __arch_exchange_and_add_body (__arch_exchange_and_add_cprefix, __arch_c, \
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 214 | mem, value)
> | ~~~~~~~~~~~
> ../sysdeps/x86/atomic-machine.h:199:12: note: expanded from macro '__arch_exchange_and_add_body'
> 198 | : "=r" (__result), "=m" (*mem) \
> | ~~~~~~~~
> 199 | : "0" ((int64_t) cast_to_integer (__addval)), \
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> mark tst-atomic.c as UNSUPPORTED when compiled with Clang.
>
> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
> ---
> misc/tst-atomic.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
I think this is fine, given anyone who wants to get us working for
building the library with Clang will need to go over FAILs and also
UNSUPPORTEDs. We will make sure to remind whoever that is as well if
needed.
Reviewed-by: Sam James <sam@gentoo.org>
> diff --git a/misc/tst-atomic.c b/misc/tst-atomic.c
> index 65d0752c91..5576f682ca 100644
> --- a/misc/tst-atomic.c
> +++ b/misc/tst-atomic.c
> @@ -16,6 +16,7 @@
> License along with the GNU C Library; if not, see
> <https://www.gnu.org/licenses/>. */
>
> +#ifndef __clang__
> #include <stdio.h>
> #include <atomic.h>
>
> @@ -636,3 +637,12 @@ do_test (void)
> }
>
> #include <support/test-driver.c>
> +#else
> +#include <support/test-driver.h>
> +
> +int
> +main (void)
> +{
> + return EXIT_UNSUPPORTED;
> +}
> +#endif
More information about the Libc-alpha
mailing list