11.6Srillig/*	$NetBSD: gcc_attribute_func.c,v 1.6 2025/05/16 16:49:43 rillig Exp $	*/
21.1Srillig# 3 "gcc_attribute_func.c"
31.1Srillig
41.1Srillig/*
51.1Srillig * Tests for the GCC __attribute__ for functions.
61.1Srillig *
71.1Srillig * https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
81.1Srillig */
91.1Srillig
101.4Srillig/* lint1-extra-flags: -X 351 */
111.4Srillig
121.1Srilligvoid deprecated_function(void)
131.1Srillig    __attribute__((__noreturn__))
141.1Srillig    __attribute__((__aligned__(8), __cold__))
151.1Srillig    __attribute__((__deprecated__("do not use while driving")));
161.1Srillig
171.1Srillig__attribute__((__cold__))
181.1Srilligvoid attribute_as_prefix(void);
191.1Srillig
201.1Srilligvoid __attribute__((__cold__)) attribute_after_type_spec(void);
211.1Srilligvoid *__attribute__((__cold__)) attribute_before_name(void);
221.1Srillig/*TODO: do not allow __attribute__ after function name */
231.1Srilligvoid *attribute_after_name __attribute__((__cold__))(void);
241.1Srilligvoid *attribute_after_parameters(void) __attribute__((__cold__));
251.1Srillig
261.2Srilligstatic void __attribute__((used))
271.2Srilligused_function(void)
281.2Srillig{
291.2Srillig}
301.2Srillig
311.3Srillig/* expect+2: warning: static function 'unused_function' unused [236] */
321.2Srilligstatic void
331.2Srilligunused_function(void)
341.2Srillig{
351.2Srillig}
361.6Srillig
371.6Srilligvoid
381.6Srillig/* expect+1: warning: parameter 'arr' unused in function 'param_attrs' [231] */
391.6Srilligparam_attrs(int arr[3] __attribute__(()) __attribute__((__deprecated__)))
401.6Srillig{
411.6Srillig}
421.6Srillig
431.6Srilligvoid asm_function(void)
441.6Srillig    __asm__("asm_function_name")
451.6Srillig    __attribute__(()) __attribute__((__deprecated__));
461.6Srilligvoid renamed_function(void)
471.6Srillig    __symbolrename(renamed_function);
48