You need to sign in or sign up before continuing.
  • Sean Christopherson's avatar
    Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug · 1aa0e8b1
    Sean Christopherson authored
    Add a config option to guard (future) usage of asm_volatile_goto() that
    includes "tied outputs", i.e. "+" constraints that specify both an input
    and output parameter.  clang-13 has a bug[1] that causes compilation of
    such inline asm to fail, and KVM wants to use a "+m" constraint to
    implement a uaccess form of CMPXCHG[2].  E.g. the test code fails with
    
      <stdin>:1:29: error: invalid operand in inline asm: '.long (${1:l}) - .'
      int foo(int *x) { asm goto (".long (%l[bar]) - .\n": "+m"(*x) ::: bar); return *x; bar: return 0; }
                                ^
      <stdin>:1:29: error: unknown token in expression
      <inline asm>:1:9: note: instantiated into assembly here
              .long () - .
                     ^
      2 errors generated.
    
    on clang-13, but passes on gcc (with appropriate asm goto support).  The
    bug is fixed in clang-14, but won't be backported to clang-13 as the
    changes are too invasive/risky.
    
    gcc also had a similar bug[3], f...
    1aa0e8b1
Kconfig 77 KB