I have tested the famous quickInvSqrt() algorithm uses in Quake, and it does not compile correctly when compiling with -O3. It does however work completely fine when compiling for -O0, -O1 and -O2.
The function goes like so: float quickInvSqrt(float x) { float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; } -- Summary: -O3 causes quickInvSqrt() to return -inf. Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: maister at archlinux dot us GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44098