gcc_attribute_func.c revision 1.3
11.3Srillig/*	$NetBSD: gcc_attribute_func.c,v 1.3 2022/06/11 11:52:13 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.1Srilligvoid deprecated_function(void)
111.1Srillig    __attribute__((__noreturn__))
121.1Srillig    __attribute__((__aligned__(8), __cold__))
131.1Srillig    __attribute__((__deprecated__("do not use while driving")));
141.1Srillig
151.1Srillig__attribute__((__cold__))
161.1Srilligvoid attribute_as_prefix(void);
171.1Srillig
181.1Srilligvoid __attribute__((__cold__)) attribute_after_type_spec(void);
191.1Srilligvoid *__attribute__((__cold__)) attribute_before_name(void);
201.1Srillig/*TODO: do not allow __attribute__ after function name */
211.1Srilligvoid *attribute_after_name __attribute__((__cold__))(void);
221.1Srilligvoid *attribute_after_parameters(void) __attribute__((__cold__));
231.1Srillig
241.2Srillig/*
251.2Srillig * The attribute 'used' does not influence static functions, it only
261.2Srillig * applies to function parameters.
271.2Srillig */
281.3Srillig/* expect+2: warning: static function 'used_function' unused [236] */
291.2Srilligstatic void __attribute__((used))
301.2Srilligused_function(void)
311.2Srillig{
321.2Srillig}
331.2Srillig
341.3Srillig/* expect+2: warning: static function 'unused_function' unused [236] */
351.2Srilligstatic void
361.2Srilligunused_function(void)
371.2Srillig{
381.2Srillig}
39