14 #if defined(__has_builtin)
15 #if __has_builtin(__builtin_add_overflow)
16 #define HAVE_BUILTIN_ADD_OVERFLOW
18 #elif defined(__GNUC__)
19 #define HAVE_BUILTIN_ADD_OVERFLOW
29 #if defined(HAVE_BUILTIN_ADD_OVERFLOW)
31 const bool is_addition_overflow_builtin = __builtin_add_overflow(i, j, &result_builtin);
32 assert(is_addition_overflow_custom == is_addition_overflow_builtin);
33 if (!is_addition_overflow_custom) {
34 assert(i + j == result_builtin);
37 if (!is_addition_overflow_custom) {
47 TestAdditionOverflow<int64_t>(fuzzed_data_provider);
48 TestAdditionOverflow<uint64_t>(fuzzed_data_provider);
49 TestAdditionOverflow<int32_t>(fuzzed_data_provider);
50 TestAdditionOverflow<uint32_t>(fuzzed_data_provider);
51 TestAdditionOverflow<int16_t>(fuzzed_data_provider);
52 TestAdditionOverflow<uint16_t>(fuzzed_data_provider);
53 TestAdditionOverflow<char>(fuzzed_data_provider);
54 TestAdditionOverflow<unsigned char>(fuzzed_data_provider);
55 TestAdditionOverflow<signed char>(fuzzed_data_provider);