This is the mail archive of the gcc@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: strict aliasing


On Mon, 2007-11-05 at 09:56 -0800, Ian Lance Taylor wrote:
> skaller <skaller@users.sourceforge.net> writes:
> 
> > Can someone tell me what optimisations might be enabled/disabled
> > by strict aliasing rules?

> Strict aliasing only refers to loads and stores using pointers.  

Ah, I see. So turning it off isn't really all that bad
for optimisation.

> So
> presumably you mean permitted the alias analysis to distinguish loads
> and stores using int* and float*, but not struct s* and struct t*.  I
> don't think that would be particularly useful.

No, that wasn't what I meant .. it seems that the existing
switch already does what I want!

> > BTW: one of the hacks is aliasing pairs like these:
> > 
> > 	struct X { T x; X(T a) : x(x) {} };
> > 	struct Y { T x[1]; };
> > 
> > in C++, so a constructor can initialise an array
> > of known length efficiently. (in C++ assignment
> > of default initialised value can cost more than
> > initialisation, and may even be impossible if
> > there is no default constructor).
> 
> C (I don't know about C++) provides an out to the aliasing rules for
> unions. 

Due to stupidity on the part of WG21, this won't work for the above
code because X above has a constructor, and unions may not
contain constructable types. [Excuse my annoyance -- I vetoed this
as an NB representative, but the current rule was passed next
meeting which I could afford to attend]


-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net


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