xref: /netbsd-src/tests/usr.bin/xlint/lint1/gcc_attribute_func.c (revision 681e50705c1ffccd4b0ce0d827fa60e0f78a9a9b)
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