13#if defined(__has_builtin)
14#if __has_builtin(__builtin_add_overflow)
15#define HAVE_BUILTIN_ADD_OVERFLOW
17#elif defined(__GNUC__)
18#define HAVE_BUILTIN_ADD_OVERFLOW
28#if defined(HAVE_BUILTIN_ADD_OVERFLOW)
30 const bool is_addition_overflow_builtin = __builtin_add_overflow(i, j, &result_builtin);
31 assert(is_addition_overflow_custom == is_addition_overflow_builtin);
32 if (!is_addition_overflow_custom) {
33 assert(i + j == result_builtin);
36 if (!is_addition_overflow_custom) {
46 TestAdditionOverflow<int64_t>(fuzzed_data_provider);
47 TestAdditionOverflow<uint64_t>(fuzzed_data_provider);
48 TestAdditionOverflow<int32_t>(fuzzed_data_provider);
49 TestAdditionOverflow<uint32_t>(fuzzed_data_provider);
50 TestAdditionOverflow<int16_t>(fuzzed_data_provider);
51 TestAdditionOverflow<uint16_t>(fuzzed_data_provider);
52 TestAdditionOverflow<char>(fuzzed_data_provider);
53 TestAdditionOverflow<unsigned char>(fuzzed_data_provider);
54 TestAdditionOverflow<signed char>(fuzzed_data_provider);
FUZZ_TARGET(addition_overflow)
#define T(expected, seed, data)
bool AdditionOverflow(const T i, const T j) noexcept