On Freitag 02 Dezember 2005 12:48, Melchior FRANZ wrote:
> * Mathias Fröhlich -- Friday 02 December 2005 07:35:
> > float
> > XDR_decode_float ( const xdr_data_t & f_Val )
> > {
> > union {
> > float f;
> > xdr_data_t x;
> > } tmp;
> > tmp.x = XDR_decode_int32 (f_Val);
> > return tmp.f;
> > }
>
> This works.
Aliasing rules roughtly tell that pointers to different types not contained in
each other are assumed to point at different locations.
The original way gcc identifies that int store on the stack as a dead store as
it will never be read again - a float is read that cannot point to the same
address.
That it worked with making that variable static is propably that gcc did not
see that nowhere in the range of visibility of that static variable, this
variable ever read. If it would be smart enough to see that it would also
optimize that store away may be including the static variable itself.
Greetings
Mathias
--
Mathias Fröhlich, email: [EMAIL PROTECTED]
_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d