This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Why is this diagnostic only reported with -pedantic?
- From: "Giovanni Bajo" <giovannibajo at libero dot it>
- To: "Tom Schutter" <tom at platte dot com>
- Cc: <gcc at gcc dot gnu dot org>
- Date: Thu, 10 Feb 2005 01:50:57 +0100
- Subject: Re: Why is this diagnostic only reported with -pedantic?
- References: <1107990381.29923.6.camel@rota.bou.platte.com>
Tom Schutter <tom@platte.com> wrote:
> Given this program:
> static void foo(void) { return(1); }
> static void bar(void) { }
> static void baz(void) { return(bar()); }
> int main(int argc, char * argv[]) {
> baz();
> return(1);
> }
>
> A compile without -pedantic gives a warning for foo(), but not for
> baz():
> $ gcc-3.4 foo.c
> foo.c: In function `foo':
> foo.c:1: warning: `return' with a value, in function returning void
>
> A compile with -pedantic gives a warning for both functions.
> $ gcc-3.4 -pedantic foo.c
> foo.c: In function `foo':
> foo.c:1: warning: `return' with a value, in function returning void
> foo.c: In function `baz':
> foo.c:3: warning: `return' with a value, in function returning void
The code in baz() is perfectly legal since ISO C++ allows void
returns. -pedantic should not warn about it because it is not a GCC extension
at all. Would you please file a bugreport about the incorrect warning emitted
for baz()?
Thanks
Giovanni Bajo