On 04/07/2019 12:27, 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.
+1 > > 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. +1 for making implicit int an error by default. > > Thanks, > Florian >