49 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
50 return __builtin_add_overflow(
a,
b, result);
67 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
68 return __builtin_sub_overflow(
a,
b, result);
85 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
86 return __builtin_mul_overflow(
a,
b, result);
106 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
107 return __builtin_add_overflow(
a,
b, result);
109 int64
res = (int64)
a + (int64)
b;
124 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
125 return __builtin_sub_overflow(
a,
b, result);
127 int64
res = (int64)
a - (int64)
b;
142 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
143 return __builtin_mul_overflow(
a,
b, result);
145 int64
res = (int64)
a * (int64)
b;
163 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
164 return __builtin_add_overflow(
a,
b, result);
165 #elif defined(HAVE_INT128)
166 int128
res = (int128)
a + (int128)
b;
173 *result = (int64)
res;
190 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
191 return __builtin_sub_overflow(
a,
b, result);
192 #elif defined(HAVE_INT128)
193 int128
res = (int128)
a - (int128)
b;
200 *result = (int64)
res;
217 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
218 return __builtin_mul_overflow(
a,
b, result);
219 #elif defined(HAVE_INT128)
220 int128
res = (int128)
a * (int128)
b;
227 *result = (int64)
res;
243 a != 0 &&
a != 1 &&
b != 0 &&
b != 1 &&
268 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
269 return __builtin_add_overflow(
a,
b, result);
286 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
287 return __builtin_sub_overflow(
a,
b, result);
302 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
303 return __builtin_mul_overflow(
a,
b, result);
323 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
324 return __builtin_add_overflow(
a,
b, result);
341 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
342 return __builtin_sub_overflow(
a,
b, result);
357 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
358 return __builtin_mul_overflow(
a,
b, result);
360 uint64
res = (uint64)
a * (uint64)
b;
378 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
379 return __builtin_add_overflow(
a,
b, result);
396 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
397 return __builtin_sub_overflow(
a,
b, result);
412 #if defined(HAVE__BUILTIN_OP_OVERFLOW)
413 return __builtin_mul_overflow(
a,
b, result);
414 #elif defined(HAVE_INT128)
415 uint128
res = (uint128)
a * (uint128)
b;
422 *result = (uint64)
res;
427 if (
a != 0 &&
b !=
res /
a)
static void PGresult * res
static bool pg_mul_s64_overflow(int64 a, int64 b, int64 *result)
static bool pg_sub_u32_overflow(uint32 a, uint32 b, uint32 *result)
static bool pg_add_u32_overflow(uint32 a, uint32 b, uint32 *result)
static bool pg_sub_s64_overflow(int64 a, int64 b, int64 *result)
static bool pg_add_u64_overflow(uint64 a, uint64 b, uint64 *result)
static bool pg_sub_s16_overflow(int16 a, int16 b, int16 *result)
static bool pg_mul_s32_overflow(int32 a, int32 b, int32 *result)
static bool pg_mul_u16_overflow(uint16 a, uint16 b, uint16 *result)
static bool pg_mul_u32_overflow(uint32 a, uint32 b, uint32 *result)
static bool pg_mul_s16_overflow(int16 a, int16 b, int16 *result)
static bool pg_mul_u64_overflow(uint64 a, uint64 b, uint64 *result)
static bool pg_sub_u16_overflow(uint16 a, uint16 b, uint16 *result)
static bool pg_add_u16_overflow(uint16 a, uint16 b, uint16 *result)
static bool pg_add_s16_overflow(int16 a, int16 b, int16 *result)
static bool pg_sub_s32_overflow(int32 a, int32 b, int32 *result)
static bool pg_add_s64_overflow(int64 a, int64 b, int64 *result)
static bool pg_sub_u64_overflow(uint64 a, uint64 b, uint64 *result)
static bool pg_add_s32_overflow(int32 a, int32 b, int32 *result)