Well certainly as long as GCC keeps spitting warnings about this, it almost never gets these warnings wrong.
I don't know whether it is spitting warnings about aliasing, but we're violating the aliasing rules described in the gcc man page.
Described in the C standard, even. There's a GCC option to make it complain about suspicious pointer casting; I believe it's called -Wstrict-aliasing? It helps a lot, we should have it enabled :-)
Segher