On 30/11/22 20:24, Segher Boessenkool wrote: > Hi! > > On Wed, Nov 30, 2022 at 03:16:25PM -0300, Adhemerval Zanella via Gcc-patches > wrote: >> clang by default rejects the input casts with: >> >> error: invalid use of a cast in a inline asm context requiring an >> lvalue: remove the cast or build with -fheinous-gnu-extensions >> >> And even with -fheinous-gnu-extensions clang still throws an warning >> and also states that this option might be removed in the future. >> For gcc the cast are still useful somewhat [1], so just remove it >> clang is used. > > This is one of the things in inline asm that is tightly tied to GCC > internals. You should emulate GCC's behaviour faithfully if you want > to claim you implement the inline asm GNU C extension. Agree, that's why I just make it a no-op for clang which indicates that it does not seem much use of this extension. > I understand that the casts should be no-ops on the asm side (maybe they > change the sign) and they are present as type-checking. Can we implement > this type-checking in a different (portable) way? I think the macro you use > should be named like __asm_output_check_type (..) or so to indicate the > intended purpose. I do not think trying to leverage it on clang side would yield much, it seems that it really does not want to support this extension. I am not sure we can really make it portable, best option I can think of would to add a mix of __builtin_classify_type and typeof prior asm call (we do something similar to powerp64 syscall code on glibc), although it would still require some gcc specific builtins. I am open for ideas, since to get this header to be clang-compatible on glibc it requires to get it first on gcc. > >> --- a/include/ChangeLog >> +++ b/include/ChangeLog > > That should not be part of the patch? Changelog entries should be > verbatim in the message you send. > > The size of this patch already makes clear this is a bad idea, imo. > This code is already hard enough to read. Indeed, I forgot that CL entries were not part of the commit.
Re: [PATCH] longlong.h: Do no use asm input cast for clang
Adhemerval Zanella Netto via Gcc-patches Mon, 12 Dec 2022 09:11:45 -0800
- [PATCH] longlong.h: Do no use asm... Adhemerval Zanella via Gcc-patches
- Re: [PATCH] longlong.h: Do n... Segher Boessenkool
- Re: [PATCH] longlong.h: ... Richard Biener via Gcc-patches
- Re: [PATCH] longlong... Segher Boessenkool
- Re: [PATCH] longlong.h: ... Adhemerval Zanella Netto via Gcc-patches
- Re: [PATCH] longlong... Segher Boessenkool
- Re: [PATCH] long... Adhemerval Zanella Netto via Gcc-patches
- Re: [PATCH]... Segher Boessenkool
- Re: [PA... Andreas Schwab
- Re:... Segher Boessenkool
- Re: [PATCH]... Joseph Myers