1*681e5070Srillig /* $NetBSD: gcc_attribute_func.c,v 1.5 2024/11/13 03:43:00 rillig Exp $ */ 2b4c7d7a7Srillig # 3 "gcc_attribute_func.c" 3b4c7d7a7Srillig 4b4c7d7a7Srillig /* 5b4c7d7a7Srillig * Tests for the GCC __attribute__ for functions. 6b4c7d7a7Srillig * 7b4c7d7a7Srillig * https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html 8b4c7d7a7Srillig */ 9b4c7d7a7Srillig 10b2baa501Srillig /* lint1-extra-flags: -X 351 */ 11b2baa501Srillig 12b4c7d7a7Srillig void deprecated_function(void) 13b4c7d7a7Srillig __attribute__((__noreturn__)) 14b4c7d7a7Srillig __attribute__((__aligned__(8), __cold__)) 15b4c7d7a7Srillig __attribute__((__deprecated__("do not use while driving"))); 16b4c7d7a7Srillig 17b4c7d7a7Srillig __attribute__((__cold__)) 18b4c7d7a7Srillig void attribute_as_prefix(void); 19b4c7d7a7Srillig 20b4c7d7a7Srillig void __attribute__((__cold__)) attribute_after_type_spec(void); 21b4c7d7a7Srillig void *__attribute__((__cold__)) attribute_before_name(void); 22b4c7d7a7Srillig /*TODO: do not allow __attribute__ after function name */ 23b4c7d7a7Srillig void *attribute_after_name __attribute__((__cold__))(void); 24b4c7d7a7Srillig void *attribute_after_parameters(void) __attribute__((__cold__)); 25b4c7d7a7Srillig 26a4bbb227Srillig static void __attribute__((used)) 27a4bbb227Srillig used_function(void) 28a4bbb227Srillig { 29a4bbb227Srillig } 30a4bbb227Srillig 315d41e58aSrillig /* expect+2: warning: static function 'unused_function' unused [236] */ 32a4bbb227Srillig static void 33a4bbb227Srillig unused_function(void) 34a4bbb227Srillig { 35a4bbb227Srillig } 36