This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR51752] publication safety violations in loop invariant motion pass


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?



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]