[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