C aliasing rules question.
Falk Hueffner
falk.hueffner@student.uni-tuebingen.de
Sun May 18 22:17:00 GMT 2003
Richard Guenther <rguenth@tat.physik.uni-tuebingen.de> writes:
> static inline int f_trunc(float f)
> {
> f -= 0.5f;
> f += (3<<22);
> return *((int*)(char*)&f) - 0x4b400000;
> }
>
> Or is this still invalid?
Yes, you're still accessing an object of type "float" with an lvalue
of type "int".
> Is it at least ok to tell _gcc_ about the aliasing?
I don't think so. Even if it happens to work right now, I don't think
it should be supported in the long run. What's so bad about using a
union?
--
Falk
More information about the Gcc
mailing list