re PR c/20000 (missing warning for noreturn function returning non-void)

2010-06-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/20000
        * c-decl.c (grokdeclarator): Delete warning.
testsuite/	
        * c-c++-common/pr20000.c: New.

From-SVN: r160346
parent df2a52a6
2010-06-06 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/20000
* c-decl.c (grokdeclarator): Delete warning.
2010-06-06 Eric Botcazou <ebotcazou@adacore.com>
* stor-layout.c (self_referential_size): Set UNKNOWN_LOCATION on the
......
......@@ -5901,12 +5901,6 @@ grokdeclarator (const struct c_declarator *declarator,
pedwarn (loc, OPT_pedantic,
"ISO C forbids qualified function types");
/* GNU C interprets a volatile-qualified function type to indicate
that the function does not return. */
if ((type_quals & TYPE_QUAL_VOLATILE)
&& !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (decl))))
warning_at (loc, 0, "%<noreturn%> function returns non-void value");
/* Every function declaration is an external reference
(DECL_EXTERNAL) except for those which are not at file
scope and are explicitly declared "auto". This is
......
2010-06-06 Manuel Lpez-Ibez <manu@gcc.gnu.org>
PR c/20000
* c-c++-common/pr20000.c: New.
2010-06-05 Fabien Chne <fabien@gcc.gnu.org>
PR c++/44086
......
/* PR c/20000 We only want to warn if the function returns
explicitly. We do not care about the return type. */
/* { dg-do compile } */
/* { dg-options "" } */
int g(void) __attribute__((noreturn));
int g2(void) __attribute__((noreturn)); /* { dg-bogus ".noreturn. function returns non-void value" } */
void h(void) __attribute__((noreturn));
int g(void) {
return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
} /* { dg-warning "'noreturn' function does return" } */
int g2(void) {
h();
}
typedef int ft(void);
volatile ft vg;
volatile ft vg2;
int vg(void);
int vg2(void); /* { dg-bogus ".noreturn. function returns non-void value" } */
int vg(void) {
return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "" { target c } 27 } */
} /* { dg-warning "'noreturn' function does return" "" { target c } 28 } */
int vg2(void) {
h();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment