[PR51752] publication safety violations in loop invariant motion pass

Aldy Hernandez aldyh@redhat.com
Mon Feb 27 18:07:00 GMT 2012


On 02/27/12 11:02, Michael Matz wrote:
> Hi,
>
> On Mon, 27 Feb 2012, Aldy Hernandez wrote:
>
>>
>>>> For that matter, didn't rth add a memory barrier at the beginning of
>>>> transactions last week?  That would mean that we can't hoist anything
>>>> outside of a transaction anyhow.  Or was it not a full memory barrier?
>>>
>>> It's now a full memory barrier for all global memory and for local statics
>>> if their address is taken (and for automatic vars with their address taken).
>>> Do we need to be concerned about non-address-taken local statics?
>>
>> It is my understanding that non-address-taken local statics are not
>> visible to other threads,
>
> void f () { static int i; i++; }
>
> Running 'f' in different threads will expose the storage to 'i' to each of
> them without taking its address :-/

In that case, shouldn't we make transactions barriers for local statics 
as well, regardless of if their address was taken or not?



More information about the Gcc-patches mailing list