This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Why is this diagnostic only reported with -pedantic?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]