* Jakub Jelinek:
On Tue, Dec 05, 2023 at 04:38:55AM +0100, Kevin Kofler via devel wrote:
Florian Weimer wrote:
The final patches for GCC 14 are currently under upstream review and should land very soon. Earlier, I had received feedback that the larger community desires just one transition, so we end up with the following warnings which turn into errors by default:
-Wimplicit-function-declaration -Wimplicit-int -Wint-conversion -Wreturn-mismatch (new, previously part of -Wreturn-types) -Wdeclaration-missing-parameter-type (new, previously unnamed) -Wincompatible-pointer-types
Only the first two were covered in the initial Fedora conversion work.
As much as I understand the point of -Werror=implicit-function-declaration (since implicit function declarations can cause several subtle bugs), and implicit int is obscure enough for its removal to not be a big problem (even though its potential for causing bugs is much lower), as much I have to wonder about the others. Especially the incompatible pointer types sound more like nitpicking than actual bugs (though I guess strict aliasing can cause issues with those, but then I would expect to see -Wstrict-aliasing warnings).
Look at the gimp case, where a function prototype was expecting double * argument but caller was calling it with address of float. void foo (double *); void bar () { float f = 5.0f; foo (&f); }
While this resulted in a warning even without -Wall, clearly nobody noticed until this was made an error:
And this results in an out-of-bounds write and potential memory corruption.
That's actually not uncommon for such bugs. Here's a similar issue for python-tables:
https://github.com/PyTables/PyTables/commit/44168c0d8e4c059ea51c8bc98a10784a74454b54
Although the critical type size mismatch happens on 32-bit architectures and Windows only. Problems like these are the reason why I don't think the Clang approach of restricting to incompatible-function-pointer-types only makes much sense.
Thanks, Florian