[PATCH] Warn about return with a void expression with -Wreturn-type.

Marcin Baczyński marbacz@gmail.com
Thu Jun 2 10:03:00 GMT 2016


2016-06-02 4:51 GMT+02:00 Martin Sebor <msebor@gmail.com>:
>> So here's my shot at fixing this in the documentation. Does that look
>> okay?
>>
>
> It looks good to me.  Just one minor point below.
>
>> @@ -4055,8 +4055,12 @@ Warn whenever a function is defined with a
>> return type that defaults
>> to @code{int}.  Also warn about any @code{return} statement with no
>> return value in a function whose return type is not @code{void}
>> (falling off the end of the function body is considered returning
>> -without a value), and about a @code{return} statement with an
>> -expression in a function whose return type is @code{void}.
>> +without a value).
>> +
>> +For a @code{return} statement with an expression in a function whose
>> +return type is @code{void}, warn unless the expression type is also
>> +@code{void}.  As a GNU extension, the latter case is accepted without a
>> +warning unless @option{-Wpedantic} is used.
>
>
> I would suggest to add that this only applies to C.  Otherwise
> it's valid C++ so G++ accepts it without a pedantic warning.

Done.

>
> As a disclaimer, someone else endowed with those special powers
> will need to approve your final patch.  If you don't get a timely
> approval please ping the patch weekly.
>
> Martin
>


gcc/ChangeLog:

  PR c/48116.

  * doc/invoke.texi (-Wreturn-type): Mention not warning on return with
   a void expression in a void function.
---
gcc/doc/invoke.texi | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index ce162a0..1747d1b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -4055,8 +4055,12 @@ Warn whenever a function is defined with a
return type that defaults
to @code{int}.  Also warn about any @code{return} statement with no
return value in a function whose return type is not @code{void}
(falling off the end of the function body is considered returning
-without a value), and about a @code{return} statement with an
-expression in a function whose return type is @code{void}.
+without a value).
+
+For C only, warn about a @code{return} statement with an expression in a
+function whose return type is @code{void}, unless the expression type is
+also @code{void}.  As a GNU extension, the latter case is accepted
+without a warning unless @option{-Wpedantic} is used.

For C++, a function without return type always produces a diagnostic
message, even when @option{-Wno-return-type} is specified.  The only
--
2.8.3



More information about the Gcc-patches mailing list