https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104804
--- Comment #2 from 。 <570070308 at qq dot com> --- (In reply to Jakub Jelinek from comment #1) > +m is handled as =m with corresponding m, early clobber for that doesn't > make sense, on one side you require that the input is the same as the > output, on the other hand you require that no input can be equal to the > output because the output might be overwritten before the inputs are read. > Just don't do that. Thanks for Reply According to the doc in https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html#Modifiers and https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#OutputOperands, in my understanding, if an OutputOperand('+'or'=') is written before reading from any OutputOperands(+) or IutputOperands except the OutputOperand itself, it should be added '&'. So if +m is handled as =m with corresponding m, I think +&m should be handle as +m and =m too. for example in: ``` __asm__( "read a" "write a" "read b" :"+&m"(a) :"g"(b) : ); ```