Commit c4b3a0a0 by Joseph Myers Committed by Joseph Myers

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
parent c26dffff
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
functions if IN_RTS defined.
......
......@@ -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 */
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.
......
/* 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'" } */
/* 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'" } */
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