gcc_attribute_stmt.c revision 1.1
11.1Srillig/* $NetBSD: gcc_attribute_stmt.c,v 1.1 2021/07/06 17:33:07 rillig Exp $ */ 21.1Srillig# 3 "gcc_attribute_stmt.c" 31.1Srillig 41.1Srillig/* 51.1Srillig * Tests for the GCC __attribute__ for statements. 61.1Srillig * 71.1Srillig * https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html 81.1Srillig */ 91.1Srillig 101.1Srilligvoid println(const char *); 111.1Srillig 121.1Srilligvoid 131.1Srilligattribute_fallthrough(int i) 141.1Srillig{ 151.1Srillig switch (i) { 161.1Srillig case 5: 171.1Srillig /* 181.1Srillig * The attribute 'fallthrough' is only valid after a 191.1Srillig * preceding statement. This is already caught by GCC, so 201.1Srillig * lint does not need to care. 211.1Srillig */ 221.1Srillig __attribute__((__fallthrough__)); 231.1Srillig case 3: 241.1Srillig println("odd"); 251.1Srillig __attribute__((__fallthrough__)); 261.1Srillig case 2: 271.1Srillig /* 281.1Srillig * Only the null statement can have the attribute 291.1Srillig * 'fallthrough'. This is already caught by GCC, so 301.1Srillig * lint does not need to care. 311.1Srillig */ 321.1Srillig /* expect+2: error: syntax error '__attribute__' [249] */ 331.1Srillig println("prime") 341.1Srillig __attribute__((__fallthrough__)); 351.1Srillig } 361.1Srillig} 37