On Wed, Sep 09, 2020 at 02:33:36PM -0700, Linus Torvalds wrote: > On Wed, Sep 9, 2020 at 11:42 AM Segher Boessenkool > <segher@xxxxxxxxxxxxxxxxxxx> wrote: > > > > It will not work like this in GCC, no. The LLVM people know about that. > > I do not know why they insist on pushing this, being incompatible and > > everything. > > Umm. Since they'd be the ones supporting this, *gcc* would be the > incompatible one, not clang. This breaks the basic requirements of asm goto. > So I'd phrase it differently. If gcc is planning on doing some > different model for asm goto with outputs, that would be the > incompatible case. If we will do asm goto with outputs, the asm will still be a jump instruction! (It is not in LLVM!) We probably *can* make asm goto have outputs (jump instructions can have outputs just fine! Just output reloads on jump instructions are hard, because not always they are *possible*; but for asm goto it should be fine). Doing as LLVM does, and making the asm a "trapping" instruction, makes it not a jump insn, and opens up whole new cans of worms (including inferior code quality). Since it has very different semantics, and we might want to keep the semantics of asm goto as well anyway, this should be called something different ("asm break" or "asm __anything" for example). It would be nice if they talked to us about it, too. LLVM claims it implements the GCC inline asm extension. It already only is compatible for the simplest of cases, but this would be much worse still :-( > and honestly, (b) is actually inferior for the error cases, even if to > a compiler person it might feel like the "RightThing(tm)" to do. > Because when an exception happens, the outputs simply won't be > initialized. Sure, that is fine, and quite possible useful, but it is not the same as asm goto. asm goto is not some exception handling construct: it is a jump instruction. > Anyway, for either of those cases, the kernel won't care either way. > We'll have to support the non-goto case for many years even if > everybody were to magically implement it today, so it's not like this > is a "you have to do it" thing. Yes. I'm just annoyed because of all the extra work created by people not communicating. Segher