On 10/18/17 15:46, Segher Boessenkool wrote:
> On Wed, Oct 18, 2017 at 06:30:23AM -0500, Segher Boessenkool wrote:
>> On Wed, Oct 18, 2017 at 11:10:48AM +0000, Bernd Edlinger wrote:
>>> A memory clobber would also make rtx_moveable_p return false,
>>> thru the following case:
>>>
>>>      case MEM:
>>>        if (type == OP_IN && MEM_READONLY_P (x))
>>>          return rtx_moveable_p (&XEXP (x, 0), OP_IN);
>>>        return false;
>>>
>>> ...
>>>
>>>      case CLOBBER:
>>>        return rtx_moveable_p (&SET_DEST (x), OP_OUT);
>>>
>>>
>>> because that memory clobber is in a parallel statement
>>> together with the ASM_OUTPUT.
>>>
>>> Right?
>>
>> Yes, that looks correct.  And a memory clobber of course _should_ make
>> the insn non-moveable as well -- it's an unknown side effect all by
>> itself :-)
> 
> Actually, it is not a side effect...  Just kind of behaves like it.
> But it does *not* prevent the asm from being deleted, for example.
> 
> 

Yes, the volatile is still necessary.


Bernd.

Reply via email to