On Wed, Jun 01, 2016 at 01:55:04PM +0200, Marcin Baczyński wrote:
> PR c/48116.
> 
> Botstrapped and tested on x86_64-pc-linux-gnu.
> 
> gcc/ChangeLog:
> 
>    * c/c-typeck.c (c_finish_return): emit warning about return with a
>     void expression in a function returning void if warn_return_type.

This is a GNU extension, so I fail to see why you should warn.  Furthermore,
the way you've done it, you would still warn instead of emit error e.g. with
-pedantic-errors on it.
Also, c/ prefixes don't belong to ChangeLog entries, gcc/c/ChangeLog is
-separate, and after : the first letter should be capitalized.
> 
> gcc/testsuite/ChangeLog:
> 
>    * gcc.dg/Wreturn-type3.c: new test.
> ---
>  gcc/c/c-typeck.c                     | 4 ++++
>  gcc/testsuite/gcc.dg/Wreturn-type3.c | 6 ++++++
>  2 files changed, 10 insertions(+)
>  create mode 100644 gcc/testsuite/gcc.dg/Wreturn-type3.c
> 
> diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
> index 1520c20..8ac6cd4 100644
> --- a/gcc/c/c-typeck.c
> +++ b/gcc/c/c-typeck.c
> @@ -9700,6 +9700,10 @@ c_finish_return (location_t loc, tree retval, tree 
> origtype)
>       warned_here = pedwarn
>         (xloc, 0,
>          "%<return%> with a value, in function returning void");
> +      else if (warn_return_type)
> +     warned_here = warning_at
> +       (loc, OPT_Wreturn_type,
> +        "%<return%> with expression, in function returning void");
>        else
>       warned_here = pedwarn
>         (xloc, OPT_Wpedantic, "ISO C forbids "
> diff --git a/gcc/testsuite/gcc.dg/Wreturn-type3.c 
> b/gcc/testsuite/gcc.dg/Wreturn-type3.c
> new file mode 100644
> index 0000000..e83c94b
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/Wreturn-type3.c
> @@ -0,0 +1,6 @@
> +/* PR c/48116 */
> +/* { dg-do compile } */
> +/* { dg-options "-Wreturn-type" } */
> +
> +void a() {}
> +void b() { return a(); }  /* { dg-warning "return" "returning void" } */
> -- 
> 2.8.3

        Jakub

Reply via email to