gcc_attribute_func.c revision 1.4
11.4Srillig/*	$NetBSD: gcc_attribute_func.c,v 1.4 2023/03/28 14:44:34 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.2Srillig/*
271.2Srillig * The attribute 'used' does not influence static functions, it only
281.2Srillig * applies to function parameters.
291.2Srillig */
301.3Srillig/* expect+2: warning: static function 'used_function' unused [236] */
311.2Srilligstatic void __attribute__((used))
321.2Srilligused_function(void)
331.2Srillig{
341.2Srillig}
351.2Srillig
361.3Srillig/* expect+2: warning: static function 'unused_function' unused [236] */
371.2Srilligstatic void
381.2Srilligunused_function(void)
391.2Srillig{
401.2Srillig}
41