When compiling the builtins with the undefined behavior sanitizer and running testcases you end up with the following warning:
UBSan: negdi2.c:20:10: negation of -9223372036854775808 cannot be represented in type 'di_int' (aka 'long long'); cast to an unsigned type to negate this value to itself
This can be avoided by doing negation in a matching unsigned variant of the type.
The same kind of pattern is found in negti2.c
This was found in an out of tree target.