c11.c revision 1.1
11.1Srillig/*	$NetBSD: c11.c,v 1.1 2023/07/12 18:13:39 rillig Exp $	*/
21.1Srillig# 3 "c11.c"
31.1Srillig
41.1Srillig/*
51.1Srillig * Test the language level C11, which adds _Generic expressions, _Noreturn
61.1Srillig * functions, anonymous struct/union members, and several more.
71.1Srillig */
81.1Srillig
91.1Srillig/* lint1-flags: -Ac11 -w -X 236 -X 351 */
101.1Srillig
111.1Srillig_Noreturn void exit(int);
121.1Srilligvoid _Noreturn exit(int);
131.1Srillig
141.1Srillig/* XXX: Syntactically invalid, yet lint accepts it. */
151.1Srilligvoid _Noreturn exit(int) _Noreturn;
161.1Srillig
171.1Srillig_Noreturn void
181.1Srillignoreturn_before_type(void)
191.1Srillig{
201.1Srillig	exit(0);
211.1Srillig}
221.1Srillig
231.1Srilligvoid _Noreturn
241.1Srillignoreturn_after_type(void)
251.1Srillig{
261.1Srillig	exit(0);
271.1Srillig}
281.1Srillig
291.1Srilligstatic _Noreturn void
301.1Srillignoreturn_after_storage_class(void)
311.1Srillig{
321.1Srillig	exit(0);
331.1Srillig}
341.1Srillig
351.1Srillig_Noreturn static void
361.1Srillignoreturn_before_storage_class(void)
371.1Srillig{
381.1Srillig	exit(0);
391.1Srillig}
401.1Srillig
411.1Srillig/* C11 6.7.4p5: A function specifier may appear more than once. */
421.1Srillig_Noreturn _Noreturn _Noreturn void
431.1Srilligthree_times(void)
441.1Srillig{
451.1Srillig	exit(0);
461.1Srillig}
47