Sparse knew about the __sync_*() builtin functions but without real type checking and nothing about the more commonly used __atomic_*(). This series fixes by adding the full type evaluation for both sets. Luc Van Oostenryck (12): builtin: add generic .args method builtin: add builtin type for volatile void * builtin: make eval_sync_compare_and_swap() more generic builtin: evaluate __sync_*_fetch*() builtin: fix evaluation of __sync_lock_release builtin: __sync_synchronize() too is variadic builtin: add predefines for __ATOMIC_RELAXED & friends builtin: add support for __atomic_add_fetch(), ... builtin: add support for others generic atomic builtins builtin: add builtin type: [volatile] pointer to bool builtin: add support for __atomic_clear() builtin: add support for remaining atomic builtins builtin.c | 112 +++++++++++++++++++++--------- predefine.c | 7 ++ symbol.c | 6 ++ symbol.h | 2 + validation/builtin-atomic-clear.c | 15 ++++ validation/builtin-sync-fetch.c | 24 +++++++ 6 files changed, 135 insertions(+), 31 deletions(-) create mode 100644 validation/builtin-atomic-clear.c create mode 100644 validation/builtin-sync-fetch.c base-commit: 5192dc1ff23dae8644480a89ada8ff420ebb674a -- 2.28.0