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