* Richard Biener: > On Wed, May 10, 2023 at 10:05 AM Jonathan Wakely via Gcc > <gcc@gcc.gnu.org> wrote: >> >> On Wed, 10 May 2023, 03:32 Eli Zaretskii, <e...@gnu.org> wrote: >> >> > >> > And then people will start complaining about GCC unnecessarily >> > erroring out, which is a compiler bug, since there's no problem >> > producing correct code in these cases. >> > >> >> >> What is the correct code for this? >> >> void foo(int); >> void bar() { foo("42"); } >> >> Why should this compile? >> >> You keep demanding better rationale for the change, but your argument >> amounts to nothing more than "it compiles today, it should compile >> tomorrow". > > void foo(__UINTPTR_TYPE__); > void bar() { foo("42"); } > > might be something we'd still like to diagnose but eventually not turn > into an error? Yes, it then depends on the target whether the code is > accepted or not, but at least it would continue working where there's > a "good" answer to your question.
The x86-64 defaults for GNU/Linux were originally set in such a way that there is a good chance that pointers fit into an int, and broken code like that happens to work (as long as it's in the main program). Of course I think we should nevertheless reject it by default. Anyway, if int-conversion somehow proves more controversial, I believe disabling implicit-int and implicit-function-declaration by default would still be a huge step forward. Thanks, Florian