The section that allowed the implicit int rule in C89 would be section 3.5.2
Type specifiers which says (emphasis mine):
int , signed , signed int , or no type specifiers
Keith Thompson in the comments points out that in C90 the section is 6.5.2
and says, The only difference is some introductory material required by ISO, resulting in a renumbering of the sections.
In C99 where this changed, the section is 6.7.2
Type specifiers and it says:
int, signed, or signed int
This is also covered in document N661: Disallow implicit “int” in declarations which says:
Change in 6.5.2 Type specifiers; add new sentence at
beginning of first paragraph of Constraints:
At least one type specifier shall be given in
the declaration specifiers in a declaration.Change in 6.5.2 Type specifiers, Constraints, from: -- int, signed, signed int, or no type specifiers to: -- int, signed, or signed int