basic asm and memory clobbers

Jeff Law law@redhat.com
Tue Nov 24 05:25:00 GMT 2015


On 11/23/2015 10:12 PM, Segher Boessenkool wrote:
> On Mon, Nov 23, 2015 at 09:48:42PM -0700, Jeff Law wrote:
>> On 11/23/2015 07:22 PM, Segher Boessenkool wrote:
>>>
>>> Here is a test that shows that on at least PowerPC the basic asm is
>>> identical to the extended asm without clobber (compile with -O2 -S and
>>> -fno-ipa-icf if you want to have it easier to read).  In this case,
>>> the basic asm is treated as not clobbering memory at the tree level
>>> already, before expanding to RTL.
>> And that IMHO, ought to be considered a bug.
>
> I agree.  Almost everyone does, as far as I can see.
>
> The question is if we want to retain this functionality.  No one has
> depended on this in a long time -- they couldn't, it has been broken
> since forever -- and there is another mechanism that does reliably
> give this functionality (extended asm).
>
> The first pass that goes wrong for this testcase is fre2, fwiw.
I think that's the wrong way to look at things -- it's not that nobody 
is depending on this behaviour, it's nobody has had a problem due to 
this bug.

I've seen some amazing things through the years where you'd think 
there's absolutely no way they could work -- but they did for a long 
time with nobody noticing some absolutely horridly wrong code, that when 
tickled just right would wreck havoc.

So again, I would suggest we document the desired behaviour and work 
towards fixing any deviations from that behaviour.

jeff




More information about the Gcc mailing list