From: Sylvestre Ledru <sylvestre@debian.org>
To: gcc-patches@gcc.gnu.org
Subject: [Patch] PR55189 enable -Wreturn-type by default
Date: Fri, 20 Dec 2013 17:54:00 -0000 [thread overview]
Message-ID: <52B4843D.3040804@debian.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 5047 bytes --]
Hello
Following this thread http://gcc.gnu.org/ml/gcc/2013-11/msg00260.html
and this bug,
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55189
I would like to propose the two following patches:
I am activating -Wreturn-type by defaut and add the option -Wmissing-return
In Wreturn-type-by-default-testsuite.diff.gz (as a gziped attachment,
too big for this ML), I am updating all the tests (792). I understand
why nobody did it before, it is a few days of work and not really
fascinating. ;)
Basically, there were several cases:
1) Add return 0; (or return true;)
to make sure that the function returns something
2) Add -Wno-return-type to dg-options / dg-lto-options when it is too
hard to construct the type to return
3) explicit declaration of the function like:
-t()
+void t()
4) idem with main
-main() {
+int main() {
If there is a consensus on the fact that these patches can be applied, I
don't have any issue with signing the copyright assignment.
Thanks,
Sylvestre
Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog (révision 206154)
+++ gcc/ChangeLog (copie de travail)
@@ -1,3 +1,11 @@
+2013-12-20 Sylvestre Ledru <sylvestre@debian.org>
+
+ PR target/55189
+ * -Wreturn-type enabled by default.
+ * Introduce back the option -Wmissing-return (enabled by -Wall)
+ It was included by default with -Wreturn-type
+ * Update all tests failing because of these changes.
+
2013-12-20 Eric Botcazou <ebotcazou@adacore.com>
* config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with
Index: gcc/c-family/c.opt
===================================================================
--- gcc/c-family/c.opt (révision 206154)
+++ gcc/c-family/c.opt (copie de travail)
@@ -673,9 +673,13 @@
Warn about returning a pointer/reference to a local or temporary variable.
Wreturn-type
-C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC
C++ ObjC++,Wall)
+C ObjC C++ ObjC++ Var(warn_return_type) Init(1) Warning
Warn whenever a function's return type defaults to \"int\" (C), or
about inconsistent return types (C++)
+Wmissing-return
+C ObjC C++ ObjC++ Var(warn_missing_return) Warning LangEnabledBy(C ObjC
C++ ObjC++,Wall)
+Warn whenever control may reach end of non-void function
+
Wselector
ObjC ObjC++ Var(warn_selector) Warning
Warn if a selector has multiple methods
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi (révision 206154)
+++ gcc/doc/invoke.texi (copie de travail)
@@ -261,7 +261,7 @@
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
-Wpointer-arith -Wno-pointer-to-int-cast @gol
-Wredundant-decls -Wno-return-local-addr @gol
--Wreturn-type -Wsequence-point -Wshadow @gol
+-Wreturn-type -Wmissing-return -Wsequence-point -Wshadow @gol
-Wsign-compare -Wsign-conversion -Wfloat-conversion @gol
-Wsizeof-pointer-memaccess @gol
-Wstack-protector -Wstack-usage=@var{len} -Wstrict-aliasing @gol
@@ -3339,6 +3339,7 @@
-Wpointer-sign @gol
-Wreorder @gol
-Wreturn-type @gol
+-Wmissing-return @gol
-Wsequence-point @gol
-Wsign-compare @r{(only in C++)} @gol
-Wstrict-aliasing @gol
@@ -3795,8 +3796,14 @@
message, even when @option{-Wno-return-type} is specified. The only
exceptions are @samp{main} and functions defined in system headers.
-This warning is enabled by @option{-Wall}.
+@item -Wmissing-return
+@opindex Wmissing-return
+@opindex Wno-missing-return
+Warn whenever falling off the end of the function body (I.e. without
+any return).
+This warning is enabled by @option{-Wall} for C and C++.
+
@item -Wswitch
@opindex Wswitch
@opindex Wno-switch
Index: gcc/fortran/options.c
===================================================================
--- gcc/fortran/options.c (révision 206154)
+++ gcc/fortran/options.c (copie de travail)
@@ -717,6 +717,10 @@
warn_return_type = value;
break;
+ case OPT_Wmissing_return:
+ warn_missing_return = value;
+ break;
+
case OPT_Wsurprising:
gfc_option.warn_surprising = value;
break;
Index: gcc/tree-cfg.c
===================================================================
--- gcc/tree-cfg.c (révision 206154)
+++ gcc/tree-cfg.c (copie de travail)
@@ -8098,7 +8098,7 @@
/* If we see "return;" in some basic block, then we do reach the end
without returning a value. */
- else if (warn_return_type
+ else if (warn_missing_return
&& !TREE_NO_WARNING (cfun->decl)
&& EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) > 0
&& !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (cfun->decl))))
@@ -8113,7 +8113,7 @@
location = gimple_location (last);
if (location == UNKNOWN_LOCATION)
location = cfun->function_end_locus;
- warning_at (location, OPT_Wreturn_type, "control reaches end of
non-void function");
+ warning_at (location, OPT_Wmissing_return, "control reaches end
of non-void function");
TREE_NO_WARNING (cfun->decl) = 1;
break;
}
[-- Attachment #2: return-type-by-default-and-missing-return-test-suite.diff.gz --]
[-- Type: application/gzip, Size: 51266 bytes --]
next reply other threads:[~2013-12-20 17:54 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-20 17:54 Sylvestre Ledru [this message]
2013-12-27 5:26 ` Chung-Ju Wu
2013-12-27 5:32 ` Yury Gribov
2014-01-14 17:49 ` Sylvestre Ledru
2014-01-16 19:44 ` Jason Merrill
2014-01-23 6:44 ` Sylvestre Ledru
2014-01-23 18:48 ` Jason Merrill
2014-01-23 18:57 ` Sylvestre Ledru
2014-06-04 19:49 Sylvestre Ledru
2014-06-04 22:35 ` Mike Stump
2014-06-04 23:31 ` Joseph S. Myers
2014-06-05 9:33 ` Sylvestre Ledru
2014-06-05 18:01 ` Joseph S. Myers
2014-06-17 16:52 ` Sylvestre Ledru
2014-06-17 17:15 ` Joseph S. Myers
2014-06-17 17:37 ` Sylvestre Ledru
2014-06-17 17:41 ` Joseph S. Myers
2014-07-07 17:18 ` Sylvestre Ledru
2014-07-20 19:20 ` Sylvestre Ledru
2014-07-30 22:10 ` Joseph S. Myers
2014-08-11 7:44 ` Sylvestre Ledru
2014-08-12 17:49 ` Joseph S. Myers
2014-08-12 17:53 ` Sylvestre Ledru
2014-08-14 17:01 ` Sylvestre Ledru
2014-08-14 18:49 Manuel López-Ibáñez
2014-08-15 16:28 ` Sylvestre Ledru
2014-08-19 22:03 ` Joseph S. Myers
2014-08-20 21:42 ` Sylvestre Ledru
2014-08-20 21:58 ` Joseph S. Myers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52B4843D.3040804@debian.org \
--to=sylvestre@debian.org \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).