1*c85f09ccSJohn Levon #ifndef __has_attribute
2*c85f09ccSJohn Levon __has_attribute()??? Quesako?
3*c85f09ccSJohn Levon #define __has_attribute(x) 0
4*c85f09ccSJohn Levon #else
5*c85f09ccSJohn Levon "has __has_attribute(), yeah!"
6*c85f09ccSJohn Levon #endif
7*c85f09ccSJohn Levon 
8*c85f09ccSJohn Levon 123 __has_attribute(nothinx) def
9*c85f09ccSJohn Levon 
10*c85f09ccSJohn Levon #if __has_attribute(nothinx)
11*c85f09ccSJohn Levon #error "not a attribute!"
12*c85f09ccSJohn Levon #endif
13*c85f09ccSJohn Levon 
14*c85f09ccSJohn Levon #if 1					\
15*c85f09ccSJohn Levon  && __has_attribute(packed)		\
16*c85f09ccSJohn Levon  && __has_attribute(aligned)		\
17*c85f09ccSJohn Levon  && __has_attribute(const)		\
18*c85f09ccSJohn Levon  && __has_attribute(pure)		\
19*c85f09ccSJohn Levon  && __has_attribute(noreturn)		\
20*c85f09ccSJohn Levon  && __has_attribute(designated_init)	\
21*c85f09ccSJohn Levon  && __has_attribute(transparent_union)	\
22*c85f09ccSJohn Levon 
23*c85f09ccSJohn Levon "ok gcc"
24*c85f09ccSJohn Levon #endif
25*c85f09ccSJohn Levon 
26*c85f09ccSJohn Levon #if 1					\
27*c85f09ccSJohn Levon  && __has_attribute(fastcall)		\
28*c85f09ccSJohn Levon 
29*c85f09ccSJohn Levon "ok gcc ignore"
30*c85f09ccSJohn Levon #endif
31*c85f09ccSJohn Levon 
32*c85f09ccSJohn Levon #if 1					\
33*c85f09ccSJohn Levon  && __has_attribute(nocast)		\
34*c85f09ccSJohn Levon  && __has_attribute(noderef)		\
35*c85f09ccSJohn Levon  && __has_attribute(safe)		\
36*c85f09ccSJohn Levon  && __has_attribute(force)		\
37*c85f09ccSJohn Levon  && __has_attribute(bitwise)		\
38*c85f09ccSJohn Levon  && __has_attribute(address_space)	\
39*c85f09ccSJohn Levon  && __has_attribute(context)		\
40*c85f09ccSJohn Levon 
41*c85f09ccSJohn Levon "ok sparse specific"
42*c85f09ccSJohn Levon #endif
43*c85f09ccSJohn Levon 
44*c85f09ccSJohn Levon /*
45*c85f09ccSJohn Levon  * check-name: has-attribute
46*c85f09ccSJohn Levon  * check-command: sparse -E $file
47*c85f09ccSJohn Levon  *
48*c85f09ccSJohn Levon  * check-output-start
49*c85f09ccSJohn Levon 
50*c85f09ccSJohn Levon "has __has_attribute(), yeah!"
51*c85f09ccSJohn Levon 123 0 def
52*c85f09ccSJohn Levon "ok gcc"
53*c85f09ccSJohn Levon "ok gcc ignore"
54*c85f09ccSJohn Levon "ok sparse specific"
55*c85f09ccSJohn Levon  * check-output-end
56*c85f09ccSJohn Levon  */
57