On January 31, 2015 4:07:23 AM CET, Segher Boessenkool 
<seg...@kernel.crashing.org> wrote:
>On Fri, Jan 30, 2015 at 12:50:01PM -0800, Richard Henderson wrote:
>> >> Jakub, the current formation includes both a use and a set of all
>> >> memory.  Your
>> >> clobber form would not imply a use.
>> > 
>> > What do you need the use for? Prevent all DSE before the barrier
>for some weird reason?
>> 
>> I don't consider the clobber to be accurately representational of a
>barrier.
>> It may work by accident, because the scratch address prevents
>aliasing
>> disambiguation, but I don't think it's good form.
>
>alias.c says:
>
>/* (mem:BLK (scratch)) is a special mechanism to conflict with
>everything.
>    This is used in epilogue deallocation functions, and in cselib.  */
>
>so it is not an accident?  You added it yourself, back in 2002 :-)
>The commit message mentions PR6165, which leads us to
>http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00231.html
>
>> If we were talking about a register and not memory, the clobber would
>not
>> prevent movement of a store across the barrier.
>
>Because registers do not live in memory (as far as GCC knows, anyway)? 
>You
>can also clobber some specific mem, and that does prevent movement of
>any
>store to (or read from) that mem over the clobber.
>
>> Do we really want different
>> rules for (mem (scratch)) than other rtl objects?
>
>It is quite similar to related things, in most ways (even the "scratch"
>part
>reads similar to "(clobber (scratch))").
>
>There is nothing else that will give these semantics.  We could invent
>a
>new RTL code, with the only effect that we would need to check for more
>codes in more places -- there aren't many places that need to check for
>this merely to exclude it.

The only relevant thing is that aliasing cannot disambiguate the MEM that is 
clobbered.  Whether that's via using a scratch or some other means is not 
relevant.

Having a MEM use pessimizes code in addition to being a memory barrier.

Where memory barrier == scheduling barrier.

Richard.

>
>Segher


Reply via email to