mirror of git://gcc.gnu.org/git/gcc.git
c-decl.c (grokdeclarator): Diagnose _Noreturn for non-C1X if pedantic.
* c-decl.c (grokdeclarator): Diagnose _Noreturn for non-C1X if pedantic. * c-parser.c (c_parser_declspecs): Include _Noreturn in syntax comment. * ginclude/stdnoreturn.h (noreturn): Don't define for C++. testsuite: * gcc.dg/c90-noreturn-1.c, gcc.dg/c99-noreturn-1.c: New tests. From-SVN: r177899
This commit is contained in:
parent
c26dffff5c
commit
c4b3a0a0b9
|
@ -1,3 +1,11 @@
|
|||
2011-08-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* c-decl.c (grokdeclarator): Diagnose _Noreturn for non-C1X if
|
||||
pedantic.
|
||||
* c-parser.c (c_parser_declspecs): Include _Noreturn in syntax
|
||||
comment.
|
||||
* ginclude/stdnoreturn.h (noreturn): Don't define for C++.
|
||||
|
||||
2011-08-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* opth-gen.awk: Do not declare target save/restore structures and
|
||||
|
|
13
gcc/c-decl.c
13
gcc/c-decl.c
|
@ -5986,7 +5986,18 @@ grokdeclarator (const struct c_declarator *declarator,
|
|||
/* Record that the function is declared `inline'. */
|
||||
DECL_DECLARED_INLINE_P (decl) = 1;
|
||||
if (declspecs->noreturn_p)
|
||||
TREE_THIS_VOLATILE (decl) = 1;
|
||||
{
|
||||
if (!flag_isoc1x)
|
||||
{
|
||||
if (flag_isoc99)
|
||||
pedwarn (loc, OPT_pedantic,
|
||||
"ISO C99 does not support %<_Noreturn%>");
|
||||
else
|
||||
pedwarn (loc, OPT_pedantic,
|
||||
"ISO C90 does not support %<_Noreturn%>");
|
||||
}
|
||||
TREE_THIS_VOLATILE (decl) = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1905,6 +1905,9 @@ c_parser_static_assert_declaration_no_semi (c_parser *parser)
|
|||
C99 6.7.4:
|
||||
function-specifier:
|
||||
inline
|
||||
_Noreturn
|
||||
|
||||
(_Noreturn is new in C1X.)
|
||||
|
||||
C90 6.5.2, C99 6.7.2:
|
||||
type-specifier:
|
||||
|
|
|
@ -26,6 +26,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
#ifndef _STDNORETURN_H
|
||||
#define _STDNORETURN_H
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#define noreturn _Noreturn
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* stdnoreturn.h */
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2011-08-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* gcc.dg/c90-noreturn-1.c, gcc.dg/c99-noreturn-1.c: New tests.
|
||||
|
||||
2011-08-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* gcc.dg/builtins-67.c: Use dg-add-options c99_runtime.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
/* Test _Noreturn not in C90. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */
|
||||
|
||||
_Noreturn void f (void); /* { dg-error "ISO C90 does not support '_Noreturn'" } */
|
|
@ -0,0 +1,5 @@
|
|||
/* Test _Noreturn not in C99. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
|
||||
|
||||
_Noreturn void f (void); /* { dg-error "ISO C99 does not support '_Noreturn'" } */
|
Loading…
Reference in New Issue