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: C aliasing rules question.


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


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