On Wed, Oct 26, 2022 at 07:06:43AM +0000, Zbigniew Jędrzejewski-Szmek wrote:
> == User Experience ==
> User experience does not change.
"The new default for C standard is -c99. Users who want to use
an older standard need to specify something like -c89." (???)
It is -std=c89/-std=gnu89 actually.
> == Dependencies ==
> To avoid regressing the porting effort, GCC as the system compiler
> needs to reject obsolete constructs by default. This is expected for
> GCC 14, to be released as part of Fedora 40 in Spring 2024.
>
> == Contingency Plan ==
> * Contingency mechanism: Upstream GCC will probably accept obsolete
> constructs longer in case distributions like Fedora cannot port to
> modern C in time.
Hmm, this sounds ominous, like if GCC might stop accepting old C syntax
altogether. Isn't this just a question of specifying the right standard
in compilation options?
GCC hasn't changed anything yet, the obsolete constructs are accepted
for decades with warnings, some of them in -Wall, others in -Wextra.
The goal of Florian's work is to determine if it is feasible to reject them
in -std={c,gnu}{9x,99,1x,11,17,18,2x} modes by default in GCC 14.
Examples of the obsolescent syntax:
qux (); // implicit int, + () args
int baz (a, b) // old style function definition
a, b; // even implicit int here
{
}
foo () // implicit int, + () args
{
bar (1, 2); // implicitly declared
baz (1, 2);
}
a; // implicit int
-Werror=implicit -Werror=implicit-function-declaration -Werror=old-style-definition
will reject these even now. Though, I think -Wold-style-definition warns
even about the no argument case which in C2X is the same as in C++ - ()
being equivalent to (void).
> == Documentation ==
> This section will be updated once more documentation of the porting
> effort will become available.
>
> == Release Notes ==
> Probably not needed because no user visible impact is intended.
It's not clear from the description: what about users who compile programs?
It would be GCC that rejects those by default, so it would affect users
compiling programs as well.
Jakub