On Mon, May 11, 2020 at 2:46 PM Nick Desaulniers <ndesaulni...@google.com> wrote: > > On Mon, May 11, 2020 at 11:09 AM Brian Gerst <brge...@gmail.com> wrote: > > This looks like the same issue that we just discussed for bitops.h. > > Add the "b" operand size modifier to force it to use the 8-bit > > register names (and probably also needs the "w" modifier in the 16-bit > > case). > > While it does feel familiar, it is slightly different. > https://godbolt.org/z/Rme4Zg > That case was both compilers validating the inline asm, yet generating > assembly that the assembler would choke on. This case is validation > in the front end failing.
> long long ret; > switch (sizeof(ret)) { > case 1: > asm ("movb $5, %0" : "=q" (ret)); > break; > case 8:; > } So if the issue here is that the output variable type is long long, what code is using a 64-bit percpu variable on a 32-bit kernel? Can you give a specific file that fails to build with Clang? If Clang is choking on it it may be silently miscompiling on GCC. -- Brian Gerst