This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c/8609: Superfluous warning when -std=c99/gnu99 and noreturn on main()
- From: Agthorr <agthorr at barsoom dot org>
- To: bangerth at dealii dot org, 141015 at bugs dot debian dot org, gcc-bugs at gcc dot gnu dot org,gcc-prs at gcc dot gnu dot org, nobody at gcc dot gnu dot org, gcc-gnats at Gcc dot gnu dot org
- Date: Mon, 18 Nov 2002 15:47:24 -0800
- Subject: Re: c/8609: Superfluous warning when -std=c99/gnu99 and noreturn on main()
- References: <20021118225507.26689.qmail@sources.redhat.com>
Well, I also compile with -Wmissing-noreturn. If I add the noreturn
attribute to main, gcc complains that the function returns. If I
remove the noreturn, gcc complains that the function does not return.
gcc can't have it both ways. ;)
On Mon, Nov 18, 2002 at 10:55:07PM -0000, bangerth@dealii.org wrote:
> Synopsis: Superfluous warning when -std=c99/gnu99 and noreturn on main()
>
> State-Changed-From-To: open->analyzed
> State-Changed-By: bangerth
> State-Changed-When: Mon Nov 18 14:55:06 2002
> State-Changed-Why:
> I can reproduce this. I think, the warning comes from the fact
> that in C99, main() has an implicit "return 0" at its end,
> indicating that if you fall off the end of main(), the
> programs return value is zero. This also explains why it
> only happens with main(), not if you rename the function.
>
> That being said, since you cannot control who calls main
> and how, what reason should you have to mark main() as
> noreturn? It should not make any difference, so why do
> it? I have difficulty seeing this as a bug...
>
> http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8609
>