* Segher Boessenkool:

> On Thu, Jul 04, 2019 at 01:27:27PM +0200, Florian Weimer wrote:
>> Implicit function declarations were removed from C99, more than twenty
>> years ago.  So far, GCC only warns about them because there were too
>> many old configure scripts where an error would lead to incorrect
>> configure check failures.
>> 
>> I can try to fix the remaining configure scripts in Fedora and submit
>> the required changes during this summer and fall.
>> 
>> I would appreciate if GCC 10 refused to declare functions implicitly by
>> default.
>
> [ The warning for it is enabled by default with -std=c99 or later, and
> with -Wall as well.  And people still ignore that?  Wow. ]

Yes, we just got a glibc bug report about it.

Even seasoned programmers miss it when it's buried in build logs.

> We already have an option for that (-Werror=implicit-function-declaration),
> and it is an error by default with -pedantic-errors already.  If you are
> asking to make it an error by default, I second that; there needs to be a
> wat to turn it off though.  Maybe it should be an error for c99 and later
> only, anyway?

Yes, it should be an error by default, without any flags.  Which is
gnu11 mode by now, I think.  So it's not sufficient to do this for
c99/c11 mode.

>> According to my observations, lack of an error diagnostic has turned
>> into a major usability issue.  For bugs related to pointer truncation,
>> we could perhaps change the C front end to produce a hard error if an
>> int value returned from an implicitly declared function is converted to
>> a pointer.
>
> No, if we allow implicit declarations at all, your proposal would error
> on valid (but improbable :-) ) code.  We should only ever give hard
> errors if we *know* something is wrong.

Yes, it should be valid code on 32-bit targets, which is why it's so
common.

>> Implicit int we should remove as well.  Checking configure scripts for
>> both issues at the same time would not be much more work.
>
> We could enable -Wimplicit-int by default for c99 and later, maybe even
> its -Werror- version.  This conflicts with at least -fms-extensions it,
> seems, dunno what to do there.

We can keep this a separate discussion if it helps.

Thanks,
Florian

Reply via email to