c11.c revision 1.3
11.3Srillig/* $NetBSD: c11.c,v 1.3 2023/07/13 20:30:21 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_Noreturn void 151.1Srillignoreturn_before_type(void) 161.1Srillig{ 171.1Srillig exit(0); 181.1Srillig} 191.1Srillig 201.1Srilligvoid _Noreturn 211.1Srillignoreturn_after_type(void) 221.1Srillig{ 231.1Srillig exit(0); 241.1Srillig} 251.1Srillig 261.1Srilligstatic _Noreturn void 271.1Srillignoreturn_after_storage_class(void) 281.1Srillig{ 291.1Srillig exit(0); 301.1Srillig} 311.1Srillig 321.1Srillig_Noreturn static void 331.1Srillignoreturn_before_storage_class(void) 341.1Srillig{ 351.1Srillig exit(0); 361.1Srillig} 371.1Srillig 381.1Srillig/* C11 6.7.4p5: A function specifier may appear more than once. */ 391.1Srillig_Noreturn _Noreturn _Noreturn void 401.1Srilligthree_times(void) 411.1Srillig{ 421.1Srillig exit(0); 431.1Srillig} 441.2Srillig 451.3Srillig// In C11 mode, 'thread_local' is not yet known, but '_Thread_local' is. 461.3Srillig/* expect+2: error: old-style declaration; add 'int' [1] */ 471.3Srillig/* expect+1: error: syntax error 'int' [249] */ 481.3Srilligthread_local int thread_local_variable_c23; 491.3Srillig_Thread_local int thread_local_variable_c11; 501.3Srillig 511.2Srillig/* The '_Noreturn' must not appear after the declarator. */ 521.2Srilligvoid _Noreturn exit(int) _Noreturn; 531.2Srillig/* expect-1: error: formal parameter #1 lacks name [59] */ 541.2Srillig/* expect-2: warning: empty declaration [2] */ 551.2Srillig/* expect+2: error: syntax error '' [249] */ 561.2Srillig/* expect+1: error: cannot recover from previous errors [224] */ 57