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: Type-punning


Thanks for the answers!

> > Why? Won't the following work?
> > 
> > void setNaN(float &v) {
> >   union { float f; int i; } t;
> >   t.i = 0x7f800001;
> >   v = t.f;
> > }
> >   
> As far as I know, this is guaranteed to work with GCC.  But it is not kosher
> according to language standards, so other compilers might dislike it.  On the
> other hand, other compilers are not guaranteed to optimize the call to
> "memcpy" out either.

Thinking about this setNaN trick, why is it not kosher?  It seems 
completely OK to me (too bad that I missed this "trick").

Note that my problem is not the unnecessary type-punning warning (I could 
live with that), but miscompiled code because of the too strict rule that 
GCC uses.  Maybe GCC shouldn't optimize around invalid type-punnings?

Geza


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