http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55540
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-11-29 22:21:25 UTC --- -9223372036854775808 is two different tokens. unary minus and the literal 9223372036854775808. 9223372036854775808 does not fit into long so it is unsigned long.