re PR middle-end/7651 (Define -Wextra strictly in terms of other warning flags)
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. 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. From-SVN: r124866
This commit is contained in:
parent
05ce201275
commit
ffd5f27613
8 changed files with 34 additions and 38 deletions
|
@ -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
|
||||
|
|
|
@ -6788,13 +6788,6 @@ finish_function (void)
|
|||
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;
|
||||
|
|
|
@ -2807,9 +2807,13 @@ This warning is enabled by @option{-Wall} for C and C++.
|
|||
|
||||
@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,
|
||||
|
@ -3129,22 +3133,6 @@ supported, but the newer name is more descriptive.) Print extra warning
|
|||
messages for these events:
|
||||
|
||||
@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{>=}.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
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);
|
||||
|
@ -12,10 +12,10 @@ int foo (void)
|
|||
{
|
||||
if( i ) return 0;
|
||||
else return 1;
|
||||
} /* { dg-bogus "may return with or without a value" } */
|
||||
}
|
||||
|
||||
int bar (void)
|
||||
{
|
||||
if( i ) return;
|
||||
if( i ) return; /* { dg-warning "'return' with no value, in function returning non-void" } */
|
||||
else return 1;
|
||||
} /* { dg-warning "may return with or without a value" } */
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
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);
|
||||
|
@ -10,9 +10,9 @@ extern int bar (void);
|
|||
|
||||
int foo (void)
|
||||
{
|
||||
if( i ) return;
|
||||
if( i ) return; /* { dg-warning "'return' with no value, in function returning non-void" } */
|
||||
else return 1;
|
||||
} /* { dg-warning "may return with or without a value" } */
|
||||
}
|
||||
|
||||
int bar (void)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* 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>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* 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>
|
||||
|
||||
|
@ -16,11 +16,11 @@ extern int bar;
|
|||
- (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;
|
||||
} /* { dg-bogus "this function may return with or without a value" } */
|
||||
} /* { dg-bogus "'return' with no value, in function returning non-void" } */
|
||||
@end
|
||||
|
|
Loading…
Add table
Reference in a new issue