1 2 #define IDENT(n) __IDENT(n## _ident, #n, 0) 3 #define IDENT_RESERVED(n) __IDENT(n## _ident, #n, 1) 4 5 /* Basic C reserved words.. */ 6 IDENT_RESERVED(sizeof); 7 IDENT_RESERVED(if); 8 IDENT_RESERVED(else); 9 IDENT_RESERVED(return); 10 IDENT_RESERVED(switch); 11 IDENT_RESERVED(case); 12 IDENT_RESERVED(default); 13 IDENT_RESERVED(break); 14 IDENT_RESERVED(continue); 15 IDENT_RESERVED(for); 16 IDENT_RESERVED(while); 17 IDENT_RESERVED(do); 18 IDENT_RESERVED(goto); 19 20 /* C typenames. They get marked as reserved when initialized */ 21 IDENT(struct); 22 IDENT(union); 23 IDENT(enum); 24 IDENT(__attribute); IDENT(__attribute__); 25 IDENT(volatile); IDENT(__volatile); IDENT(__volatile__); 26 IDENT(double); 27 28 /* C storage classes. They get marked as reserved when initialized */ 29 IDENT(static); 30 31 /* C99 keywords */ 32 IDENT(restrict); IDENT(__restrict); IDENT(__restrict__); 33 IDENT(_Bool); 34 IDENT_RESERVED(_Complex); 35 IDENT_RESERVED(_Imaginary); 36 37 /* C11 keywords */ 38 IDENT(_Alignas); 39 IDENT_RESERVED(_Alignof); 40 IDENT(_Atomic); 41 IDENT_RESERVED(_Generic); 42 IDENT(_Noreturn); 43 IDENT_RESERVED(_Static_assert); 44 IDENT(_Thread_local); 45 46 /* Special case for L'\t' */ 47 IDENT(L); 48 49 /* Extended gcc identifiers */ 50 IDENT(asm); IDENT_RESERVED(__asm); IDENT_RESERVED(__asm__); 51 IDENT(alignof); IDENT_RESERVED(__alignof); IDENT_RESERVED(__alignof__); 52 IDENT_RESERVED(__sizeof_ptr__); 53 IDENT_RESERVED(__builtin_types_compatible_p); 54 IDENT_RESERVED(__builtin_offsetof); 55 IDENT_RESERVED(__label__); 56 57 /* Preprocessor idents. Direct use of __IDENT avoids mentioning the keyword 58 * itself by name, preventing these tokens from expanding when compiling 59 * sparse. */ 60 IDENT(defined); 61 IDENT(once); 62 IDENT(c_alignas); 63 IDENT(c_alignof); 64 IDENT(c_generic_selections); 65 IDENT(c_static_assert); 66 __IDENT(pragma_ident, "__pragma__", 0); 67 __IDENT(__VA_ARGS___ident, "__VA_ARGS__", 0); 68 __IDENT(__func___ident, "__func__", 0); 69 __IDENT(__FUNCTION___ident, "__FUNCTION__", 0); 70 __IDENT(__PRETTY_FUNCTION___ident, "__PRETTY_FUNCTION__", 0); 71 72 /* Sparse commands */ 73 IDENT_RESERVED(__context__); 74 IDENT_RESERVED(__range__); 75 76 /* Magic function names we recognize */ 77 IDENT(memset); IDENT(memcpy); 78 IDENT(copy_to_user); IDENT(copy_from_user); 79 IDENT(main); 80 81 /* used by the symbolic checker */ 82 IDENT(__assume); 83 IDENT(__assert); 84 IDENT(__assert_eq); 85 IDENT(__assert_const); 86 87 #undef __IDENT 88 #undef IDENT 89 #undef IDENT_RESERVED 90