WG14 has elected to remove support for K&R C functions in C2x. The feature was introduced into C89 already deprecated, so after this long of a deprecation period, the committee has made an empty parameter list mean the same thing in C as it means in C++: the function accepts no arguments exactly as if the function were written with (void) as the parameter list.
This patch implements WG14 N2841 No function declarators without prototypes (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm) and WG14 N2432 Remove support for function definitions with identifier lists (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf).
This makes me think we should have some declarative way of specifying dependencies between LANGOPTs. It's presumably sufficiently obvious to a library user that they shouldn't enable (eg) CPlusPlus20 unless they enable all the previous CPlusPlusXY modes and CPlusPlus, but I doubt it's obvious that enabling CPlusPlus requires also enabling StrictPrototypes.
In fact, after this change, I think a lot of existing library users of Clang that invent their own LangOptions will silently start getting this wrong. That's concerning. Maybe we should consider prototypes to be required if either StrictPrototypes or CPlusPlus is enabled?