OSDN Git Service

2006-05-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 20 May 2007 00:45:58 +0000 (00:45 +0000)
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 20 May 2007 00:45:58 +0000 (00:45 +0000)
PR middle-end/7651
* doc/invoke.texi (Wreturn-type): Complete description.
(Wextra): Delete item about return-type warning.
* c-decl.c: Delete redundant Wextra warning.

testsuite/
* gcc.dg/20030906-1.c: Replace Wextra with Wreturn-type.
* gcc.dg/20030906-2.c: Likewise.
* objc.dg/method-17.m: Add -Wreturn-type.
* obj-c++.dg/method-21.mm: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124866 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-decl.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20030906-1.c
gcc/testsuite/gcc.dg/20030906-2.c
gcc/testsuite/obj-c++.dg/method-21.mm
gcc/testsuite/objc.dg/method-17.m

index 01a9a63..d922119 100644 (file)
@@ -1,3 +1,10 @@
+2006-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR middle-end/7651
+       * doc/invoke.texi (Wreturn-type): Complete description.
+       (Wextra): Delete item about return-type warning.
+       * c-decl.c: Delete redundant Wextra warning.
+       
 2006-05-20  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/31585
 2006-05-20  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/31585
index db8412c..1f8943f 100644 (file)
@@ -6788,13 +6788,6 @@ finish_function (void)
       TREE_NO_WARNING (fndecl) = 1;
     }
 
       TREE_NO_WARNING (fndecl) = 1;
     }
 
-  /* With just -Wextra, complain only if function returns both with
-     and without a value.  */
-  if (extra_warnings
-      && current_function_returns_value
-      && current_function_returns_null)
-    warning (OPT_Wextra, "this function may return with or without a value");
-
   /* Store the end of the function, so that we get good line number
      info for the epilogue.  */
   cfun->function_end_locus = input_location;
   /* Store the end of the function, so that we get good line number
      info for the epilogue.  */
   cfun->function_end_locus = input_location;
index 7aef897..7be8167 100644 (file)
@@ -2807,9 +2807,13 @@ This warning is enabled by @option{-Wall} for C and C++.
 
 @item -Wreturn-type
 @opindex Wreturn-type
 
 @item -Wreturn-type
 @opindex Wreturn-type
-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}.
+@opindex Wno-return-type
+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 a
+expression in a function whose return-type is @code{void}.
 
 Also warn if the return type of a function has a type qualifier
 such as @code{const}.  For ISO C such a type qualifier has no effect,
 
 Also warn if the return type of a function has a type qualifier
 such as @code{const}.  For ISO C such a type qualifier has no effect,
@@ -3130,22 +3134,6 @@ messages for these events:
 
 @itemize @bullet
 @item
 
 @itemize @bullet
 @item
-A function can return either with or without a value.  (Falling
-off the end of the function body is considered returning without
-a value.)  For example, this function would evoke such a
-warning:
-
-@smallexample
-@group
-foo (a)
-@{
-  if (a > 0)
-    return a;
-@}
-@end group
-@end smallexample
-
-@item
 An unsigned value is compared against zero with @samp{<} or @samp{>=}.
 
 @item @r{(C only)}
 An unsigned value is compared against zero with @samp{<} or @samp{>=}.
 
 @item @r{(C only)}
index 42f0c69..20d58c7 100644 (file)
@@ -1,3 +1,11 @@
+2006-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR middle-end/7651
+       * gcc.dg/20030906-1.c: Replace Wextra with Wreturn-type.
+       * gcc.dg/20030906-2.c: Likewise.
+       * objc.dg/method-17.m: Add -Wreturn-type.
+       * obj-c++.dg/method-21.mm: Likewise.
+       
 2006-05-20  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/31585
 2006-05-20  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/31585
index 57d80f0..c416f55 100644 (file)
@@ -2,7 +2,7 @@
    Copyright (C) 2003 Free Software Foundation Inc.  */
 
 /* { dg-do compile } */
    Copyright (C) 2003 Free Software Foundation Inc.  */
 
 /* { dg-do compile } */
-/* { dg-options "-O -finline-functions -Wextra" } */
+/* { dg-options "-O -finline-functions -Wreturn-type" } */
 
 extern int i;
 extern int foo (void);
 
 extern int i;
 extern int foo (void);
@@ -12,10 +12,10 @@ int foo (void)
 {
   if( i ) return 0;
   else    return 1;
 {
   if( i ) return 0;
   else    return 1;
-}              /* { dg-bogus "may return with or without a value" } */
+}
 
 int bar (void)
 {
 
 int bar (void)
 {
-  if( i ) return;
+  if( i ) return; /* { dg-warning "'return' with no value, in function returning non-void" } */
   else    return 1;
   else    return 1;
-}              /* { dg-warning "may return with or without a value" } */
+}              
index 8f3d378..1191133 100644 (file)
@@ -2,7 +2,7 @@
    Copyright (C) 2003 Free Software Foundation Inc.  */
 
 /* { dg-do compile } */
    Copyright (C) 2003 Free Software Foundation Inc.  */
 
 /* { dg-do compile } */
-/* { dg-options "-O -finline-functions -Wextra" } */
+/* { dg-options "-O -finline-functions -Wreturn-type" } */
 
 extern int i;
 extern int foo (void);
 
 extern int i;
 extern int foo (void);
@@ -10,9 +10,9 @@ extern int bar (void);
 
 int foo (void)
 {
 
 int foo (void)
 {
-  if( i ) return;
+  if( i ) return; /* { dg-warning "'return' with no value, in function returning non-void" } */
   else    return 1;
   else    return 1;
-}              /* { dg-warning "may return with or without a value" } */
+}
 
 int bar (void)
 {
 
 int bar (void)
 {
index 94291a5..0c8051c 100644 (file)
@@ -1,6 +1,6 @@
 /* Test for spurious "may or may not return a value" warnings.  */
 /* { dg-do compile } */
 /* Test for spurious "may or may not return a value" warnings.  */
 /* { dg-do compile } */
-/* { dg-options "-Wextra" } */
+/* { dg-options "-Wreturn-type -Wextra" } */
 
 #include <objc/Object.h>
 
 
 #include <objc/Object.h>
 
index 5e28ddc..501c2de 100644 (file)
@@ -1,7 +1,7 @@
 /* Test for spurious "may or may not return a value" warnings.  */
 
 /* { dg-do compile } */
 /* Test for spurious "may or may not return a value" warnings.  */
 
 /* { dg-do compile } */
-/* { dg-options "-Wextra" } */
+/* { dg-options "-Wreturn-type -Wextra" } */
 
 #include <objc/Object.h>
 
 
 #include <objc/Object.h>
 
@@ -16,11 +16,11 @@ extern int bar;
 - (id) meth1 {
   if (bar)
     return [Object new];
 - (id) meth1 {
   if (bar)
     return [Object new];
-  return;
-} /* { dg-warning "this function may return with or without a value" } */
+  return; /* { dg-warning "'return' with no value, in function returning non-void" } */
+} 
 - (void) meth2 {
   if (!bar)
     return;
   bar = 0;
 - (void) meth2 {
   if (!bar)
     return;
   bar = 0;
-} /* { dg-bogus "this function may return with or without a value" } */
+} /* { dg-bogus "'return' with no value, in function returning non-void" } */
 @end
 @end