https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92597
--- Comment #12 from Klaus Leppkes <leppkes at stce dot rwth-aachen.de> --- "I said "+g", not "+g,r". g stands for general operand, so it allows a non-immediate operand, whether it is in memory or register." error_large_lvalue.cpp: In function ‘void DoNotOptimize(Tp&) [with Tp = Large]’: error_large_lvalue.cpp:16:46: error: inconsistent operand constraints in an ‘asm’ 16 | asm volatile("" : "+g"(value) : : "memory");