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)
:
);
```

Reply via email to