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