https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101938
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- Simplified test-case: $ cat postgresql.c typedef long long int int64; #define INT64CONST(x) (x##LL) /* -9223372036854775808ULL */ #define INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1) static void __attribute__((noipa)) foo(int64 arg1, int64 arg2) { int64 a1 = -arg1; int64 a2 = (arg2 < 0) ? arg2 : -arg2; if (a1 > a2) { int64 swap = arg1; arg1 = arg2; arg2 = swap; } if (arg1 == INT64_MIN && arg2 == -1) return; __builtin_abort(); } int main() { foo(-1, INT64_MIN); return 0; }