public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Sylvestre Ledru <sylvestre@debian.org>
To: "Joseph S. Myers" <joseph@codesourcery.com>
Cc: gcc-patches@gcc.gnu.org, Jason Merrill <jason@redhat.com>
Subject: Re: [Patch] PR55189 enable -Wreturn-type by default
Date: Tue, 17 Jun 2014 16:52:00 -0000	[thread overview]
Message-ID: <53A07226.4040803@debian.org> (raw)
In-Reply-To: <Pine.LNX.4.64.1406051749260.2819@digraph.polyomino.org.uk>

[-- Attachment #1: Type: text/plain, Size: 873 bytes --]

On 05/06/2014 20:01, Joseph S. Myers wrote:
>
>> Initially, I implemented -Wmissing-return to manage this case (
>> https://gcc.gnu.org/ml/gcc-patches/2014-01/msg00820.html ) but Jason
>> suggested to remove that:
>> https://gcc.gnu.org/ml/gcc-patches/2014-01/msg01033.html
>> (I don't have a strong opinion on the subject).
> I think splitting the option like that makes sense.  Compatibility 
> indicates that -Wreturn-type and -Wall should still enable 
> -Wmissing-return, but only the other pieces of -Wreturn-type should be 
> enabled by default, at least for C.  (Enabling -Wimplicit-int by default 
> might be a good starting point.)
OK.
As attachment, you will find a potential implementation. Is that what
you expect?

> Also, at least one testsuite change in your patch is wrong. 
OK. Thanks. I've probably made other (I update +1300 of them)

Thanks
Sylvestre


[-- Attachment #2: 0002-Enable-Wimplicit-by-default.patch --]
[-- Type: text/x-patch, Size: 757 bytes --]

From 1b936c618c58dc0e899fa9f56013de48f7e4dcd6 Mon Sep 17 00:00:00 2001
From: Sylvestre Ledru <sylvestre@debian.org>
Date: Tue, 17 Jun 2014 18:48:29 +0200
Subject: [PATCH 2/2] Enable Wimplicit by default

---
 gcc/c-family/c.opt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 050d400..9b9ede7 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -460,7 +460,7 @@ C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C
 Warn about implicit function declarations
 
 Wimplicit-int
-C ObjC Var(warn_implicit_int) Warning LangEnabledBy(C ObjC,Wimplicit)
+C ObjC Var(warn_implicit_int) Warning
 Warn when a declaration does not specify a type
 
 Wimport
-- 
2.0.0


[-- Attachment #3: 0001-Introduce-Wmissing-return-Was-part-of-Wreturn-type-w.patch --]
[-- Type: text/x-patch, Size: 4029 bytes --]

From 80cd3dff34f74058ab66b69e0e01a05eaf686338 Mon Sep 17 00:00:00 2001
From: Sylvestre Ledru <sylvestre@debian.org>
Date: Tue, 17 Jun 2014 18:48:12 +0200
Subject: [PATCH 1/2] Introduce -Wmissing-return (Was part of -Wreturn-type
 which is now enabled by default)

---
 gcc/c-family/c.opt    |  4 ++++
 gcc/doc/invoke.texi   | 10 +++++++++-
 gcc/fortran/options.c |  4 ++++
 gcc/tree-cfg.c        |  4 ++--
 4 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 91f8275..050d400 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -697,6 +697,10 @@ Wreturn-type
 C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
 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
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 9a34f1c..9911e86 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -258,7 +258,7 @@ Objective-C and Objective-C++ Dialects}.
 -Winvalid-pch -Wlarger-than=@var{len}  -Wunsafe-loop-optimizations @gol
 -Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol
 -Wmain -Wmaybe-uninitialized -Wmissing-braces  -Wmissing-field-initializers @gol
--Wmissing-include-dirs @gol
+-Wmissing-include-dirs -Wmissing-return @gol
 -Wno-multichar  -Wnonnull  -Wno-overflow -Wopenmp-simd @gol
 -Woverlength-strings  -Wpacked  -Wpacked-bitfield-compat  -Wpadded @gol
 -Wparentheses  -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
@@ -3327,6 +3327,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
 -Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)}  @gol
 -Wmaybe-uninitialized @gol
 -Wmissing-braces @r{(only for C/ObjC)} @gol
+-Wmissing-return @gol
 -Wnonnull  @gol
 -Wopenmp-simd @gol
 -Wparentheses  @gol
@@ -3657,6 +3658,13 @@ the following example, the initializer for @samp{a} is not fully
 bracketed, but that for @samp{b} is fully bracketed.  This warning is
 enabled by @option{-Wall} in C.
 
+@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++.
+
 @smallexample
 int a[2][2] = @{ 0, 1, 2, 3 @};
 int b[2][2] = @{ @{ 0, 1 @}, @{ 2, 3 @} @};
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index a2b91ca..fe71230 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -698,6 +698,10 @@ gfc_handle_option (size_t scode, const char *arg, int value,
       gfc_option.warn_line_truncation = value;
       break;
 
+    case OPT_Wmissing_return:
+      warn_missing_return = value;
+      break;
+
     case OPT_Wrealloc_lhs:
       gfc_option.warn_realloc_lhs = value;
       break;
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index e824619..2fd342e 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -8265,7 +8265,7 @@ pass_warn_function_return::execute (function *fun)
 
   /* 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 (fun->decl)
 	   && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (fun)->preds) > 0
 	   && !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (fun->decl))))
@@ -8280,7 +8280,7 @@ pass_warn_function_return::execute (function *fun)
 	      location = gimple_location (last);
 	      if (location == UNKNOWN_LOCATION)
 		location = fun->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 (fun->decl) = 1;
 	      break;
 	    }
-- 
2.0.0


  reply	other threads:[~2014-06-17 16:52 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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
  -- strict thread matches above, loose matches on Subject: below --
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
2013-12-20 17:54 Sylvestre Ledru
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

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=53A07226.4040803@debian.org \
    --to=sylvestre@debian.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jason@redhat.com \
    --cc=joseph@codesourcery.com \
    /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).