When passing -O2 in conjunction with -fPIC, gcc ICEs on this code from fdlibm (which is used in Mozilla JavaScript). Attachments to follow.
Created attachment 4229 [details] The problem code
Created attachment 4230 [details] included file for e_hypot.c
You can fix this up by passing -fno-strict-aliasing option to gcc when compiling it, the code does illegal type punning. Even if it compiled fine, it would not work as expected with strict aliasing turned on. I agree that gcc should not ICE on any bad code, but as this ICE goes away since function-as-trees were added to mainline gcc, fixing this would be in my eyes only wasted time (the ICE can be only triggered by the illegal type punning of floating point values under certain specific conditions). Example of illegal code is double d; ... *(int *)&d = 0x...;