On Thu, 21 Jun 2018, Eric Gallager wrote:

> On 6/21/18, Jeff Law <l...@redhat.com> wrote:
> > On 06/12/2018 11:21 AM, Joseph Myers wrote:
> >> On Tue, 12 Jun 2018, Martin Sebor wrote:
> >>
> >>> The proposal to enable -Wstrict-prototypes discussed below
> >>> was considered too late for GCC 8.  I'd like to revive it
> >>> now for GCC 9.
> >>>
> >>>   https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00935.html
> >>
> >> My point from that discussion stands that () for no arguments should be
> >> considered separately from warning for all the other cases.
> > There's a lot of legacy code out there...  What's the proposal for
> > handling the no argument () case?  Are we thinking multiple levels?  And
> > if so what's the default?
> 
> -Wstrict-prototypes and -Wstricter-prototypes for the prototypes case?
> And then split
> -Wold-style-definition into -Wold-style-definition and
> -Wc++-style-definition for the equivalent use of () in function
> definitions?

I think the existing options, when explicitly used, should keep warning 
for all the cases they currently warn for, including (), even if you also 
have new warning options available that correspond to a subset of the 
existing options.

It's the possible enabled-by-default warnings that I think should be a 
subset, as I don't think using () for no-argument functions is such an 
obsolescent practice as using old-style definitions, or () declarations, 
for functions with arguments (especially since () for no-argument 
functions is perfectly idiomatic in C++, and if C obsoletes non-prototype 
functions I'd expect it to end up with () having the same meaning as in 
C++, rather than being disallowed).

The vast bulk of the places where that previous patch changes testcases 
are for (), which would not need changing under my proposal.

(No doubt there *is* a lot of legacy code that uses old-style definitions 
together with function prototypes in separate declarations; I eliminated 
old-style definitions from glibc only in 2015.  Hopefully code with 
old-style definitions and no prototype declarations is rarer.)

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to