https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115310

--- Comment #7 from Florian Weimer <fw at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #6)
> But -Wreturn-mismatch doesn't diagnose the following, only -Wreturn-type
> does.
> IIRC we made -Werror=return-type the default mainly because of this.
> 
> int foo()
> {
> }
> 
> I realize -std=gnu89 isn't perfect but if sources are happy with that
> it's much better than -fpermissive - not only because -fpermissive
> only works (is not diagnosed) with GCC14 for C.
> 
> I also realize -std=gnu89 is going to run into this very same issue with
> older compilers.  Bah.

You cannot use -Werror=return-type with legacy sources because it refuses to
compile this (implicit int/no return type):

foo()
{
}

And that's perfectly valid C89. As far as I can tell, -Werror=return-type is
intended to reject this (maybe the warning even predates -Wimplicit-int?).

I assume you're making the injection of -std=gnu89 conditional. You really need
to drop -Werror=return-type at the same time.

Reply via email to