http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57034
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |jakub at gcc dot gnu.org Resolution| |INVALID --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-22 19:07:25 UTC --- Why do you think it is a bug? As one arm of the ?: has float type, both arms need to be converted to float, and INT_MAX isn't representable in float, you don't have to get the same value back. With optimizations it might be evaluated in extended precision and on i?86 0x7fffffff fits into long double, but e.g. on x86_64 you'll always get 0x80000000.