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.

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.  But the other case involves functions defined as returning
_Bool, and the result is used in a boolean context.  The x86-64 ABI only
requires that the lowest 8 bits of the return value are defined, so an
implicit int results in int values which incorrectly compare as inqueal
to zero.

Given that the pointer truncation issue is only slightly more common,
than the _Bool issue, I don't think the diagnostic improvement for
pointers would be very helpful, and we should just transition to errors.

Implicit int we should remove as well.  Checking configure scripts for
both issues at the same time would not be much more work.

Thanks,
Florian

Reply via email to