Regression in 4.0 (sort of)

Dale Johannesen dalej@apple.com
Mon Dec 13 03:53:00 GMT 2004


Consider the nonstandard C program

main() {
   foo();
}
void foo() {
}

Previous versions of gcc accepted this with a warning; 4.0 gives an 
error.
This appears to date to Zack's rewrite of duplicate_decls early this 
year.
Naturally, this is causing some programs not to compile any more.
Geoff thinks this may be unintentional, and certainly it doesn't seem 
that
any bugs that would actually cause anything to break would slip through
if we treated it as a warning.  Is this an intentional change?

The following exception is already made for a different, but quite 
similar, case.
       /* Permit void foo (...) to match int foo (...) if the latter is
          the definition and implicit int was used.  See
          c-torture/compile/920625-2.c.  */



More information about the Gcc mailing list