2 #define IDENT(n) __IDENT(n## _ident, #n, 0)
3 #define IDENT_RESERVED(n) __IDENT(n## _ident, #n, 1)
5 /* Basic C reserved words.. */
6 IDENT_RESERVED(sizeof);
9 IDENT_RESERVED(return);
10 IDENT_RESERVED(switch);
12 IDENT_RESERVED(default);
13 IDENT_RESERVED(break);
14 IDENT_RESERVED(continue);
16 IDENT_RESERVED(while);
20 /* C typenames. They get marked as reserved when initialized */
24 IDENT(__attribute
); IDENT(__attribute__
);
25 IDENT(volatile); IDENT(__volatile
); IDENT(__volatile__
);
28 /* Special case for L'\t' */
31 /* Extended gcc identifiers */
32 IDENT(asm); IDENT_RESERVED(__asm
); IDENT_RESERVED(__asm__
);
33 IDENT(alignof
); IDENT_RESERVED(__alignof
); IDENT_RESERVED(__alignof__
);
34 IDENT_RESERVED(_Alignof
);
35 IDENT_RESERVED(__sizeof_ptr__
);
36 IDENT_RESERVED(__builtin_types_compatible_p
);
37 IDENT_RESERVED(__builtin_offsetof
);
38 IDENT_RESERVED(__label__
);
41 IDENT(packed
); IDENT(__packed__
);
42 IDENT(aligned
); IDENT(__aligned__
);
49 IDENT(mode
); IDENT(__mode__
);
50 IDENT(QI
); IDENT(__QI__
);
51 IDENT(HI
); IDENT(__HI__
);
52 IDENT(SI
); IDENT(__SI__
);
53 IDENT(DI
); IDENT(__DI__
);
54 IDENT(word
); IDENT(__word__
);
55 IDENT(format
); IDENT(__format__
);
56 IDENT(section
); IDENT(__section__
);
57 IDENT(unused
); IDENT(__unused__
);
58 IDENT(const); IDENT(__const
); IDENT(__const__
);
59 IDENT(used
); IDENT(__used__
);
60 IDENT(warn_unused_result
); IDENT(__warn_unused_result__
);
61 IDENT(noinline
); IDENT(__noinline__
);
62 IDENT(deprecated
); IDENT(__deprecated__
);
63 IDENT(noreturn
); IDENT(__noreturn__
);
64 IDENT(regparm
); IDENT(__regparm__
);
65 IDENT(weak
); IDENT(__weak__
);
66 IDENT(no_instrument_function
); IDENT(__no_instrument_function__
);
67 IDENT(sentinel
); IDENT(__sentinel__
);
68 IDENT(alias
); IDENT(__alias__
);
69 IDENT(pure
); IDENT(__pure__
);
70 IDENT(always_inline
); IDENT(__always_inline__
);
71 IDENT(syscall_linkage
); IDENT(__syscall_linkage__
);
72 IDENT(visibility
); IDENT(__visibility__
);
73 IDENT(bitwise
); IDENT(__bitwise__
);
74 IDENT(model
); IDENT(__model__
);
75 IDENT(format_arg
); IDENT(__format_arg__
);
76 IDENT(nothrow
); IDENT(__nothrow
); IDENT(__nothrow__
);
77 IDENT(__transparent_union__
);
80 IDENT(nonnull
); IDENT(__nonnull
); IDENT(__nonnull__
);
81 IDENT(constructor
); IDENT(__constructor__
);
82 IDENT(destructor
); IDENT(__destructor__
);
83 IDENT(cold
); IDENT(__cold__
);
84 IDENT(hot
); IDENT(__hot__
);
85 IDENT(cdecl); IDENT(__cdecl__
);
86 IDENT(stdcall); IDENT(__stdcall__
);
87 IDENT(fastcall
); IDENT(__fastcall__
);
88 IDENT(dllimport
); IDENT(__dllimport__
);
89 IDENT(dllexport
); IDENT(__dllexport__
);
90 IDENT(restrict
); IDENT(__restrict
); IDENT(__restrict__
);
91 IDENT(artificial
); IDENT(__artificial__
);
92 IDENT(leaf
); IDENT(__leaf__
);
93 IDENT(vector_size
); IDENT(__vector_size__
);
94 IDENT(error
); IDENT(__error__
);
98 /* Preprocessor idents. Direct use of __IDENT avoids mentioning the keyword
99 * itself by name, preventing these tokens from expanding when compiling
103 __IDENT(pragma_ident
, "__pragma__", 0);
104 __IDENT(__VA_ARGS___ident
, "__VA_ARGS__", 0);
105 __IDENT(__LINE___ident
, "__LINE__", 0);
106 __IDENT(__FILE___ident
, "__FILE__", 0);
107 __IDENT(__DATE___ident
, "__DATE__", 0);
108 __IDENT(__TIME___ident
, "__TIME__", 0);
109 __IDENT(__func___ident
, "__func__", 0);
110 __IDENT(__FUNCTION___ident
, "__FUNCTION__", 0);
111 __IDENT(__PRETTY_FUNCTION___ident
, "__PRETTY_FUNCTION__", 0);
112 __IDENT(__COUNTER___ident
, "__COUNTER__", 0);
114 /* Sparse commands */
115 IDENT_RESERVED(__context__
);
116 IDENT_RESERVED(__range__
);
118 /* Magic function names we recognize */
119 IDENT(memset
); IDENT(memcpy
);
120 IDENT(copy_to_user
); IDENT(copy_from_user
);
125 #undef IDENT_RESERVED