static int ok_int(int *ptr, int val) { return __sync_add_and_fetch(ptr, val); } static long* ok_ptr(long **ptr, long *val) { return __sync_add_and_fetch(ptr, val); } static void chk_ret_ok(long *ptr, long val) { _Static_assert([typeof(__sync_add_and_fetch(ptr, val))] == [long], ""); } static int chk_val(int *ptr, long val) { // OK: val is converted to an int return __sync_add_and_fetch(ptr, val); } /* * check-name: builtin-sync-fetch */