diff -r c5110aa667d8 sys/src/cmd/cc/lex.c --- a/sys/src/cmd/cc/lex.c Wed Jul 29 13:56:03 2020 +0930 +++ b/sys/src/cmd/cc/lex.c Wed Jul 29 11:07:39 2020 -0700 @@ -444,7 +444,7 @@ yylex(void) { vlong vv; - long c, c1, t; + long c, c1, t, w; char *cp; Rune rune; Sym *s; @@ -844,7 +844,8 @@ yyerror("overflow in constant"); vv = yylval.vval; - if(c1 & Numvlong) { + w = (c1 & Numdec) ? 31 : 32; + if(c1 & Numvlong || (uvlong)vv >= 1ULL<