https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92597
--- Comment #13 from Klaus Leppkes <leppkes at stce dot rwth-aachen.de> --- (In reply to Andrew Pinski from comment #11) > (In reply to Klaus Leppkes from comment #9) > > > > g++ -c error_large_lvalue.cpp > > error_large_lvalue.cpp: In function ‘void DoNotOptimize(Tp&) [with Tp = > > Large]’: > > error_large_lvalue.cpp:16:48: error: inconsistent operand constraints in an > > ‘asm’ > > 16 | asm volatile("" : "+g,r"(value) : : "memory"); > > You just need "+g" and not "+g,r". That is what we have been saying, +m and > +g are similar. +g,m is working. I thought the set of type with "m" is a strict subset of the types with "g". What am I missing here?