The left side of the MIN() expression is the (signed) result of pointer
subtraction (ptrdiff_t). The right hand side is the also the (signed)
result of pointer subtraction, additionally subtracting the element size
('es'), which is unsigned size_t. This coerces the right-hand
expression into an unsigned value. MIN(signed, unsigned) triggers
-Wsign-compare.
(MIN(signed, unsigned) triggers -Wsign-compare.)
Sorting elements of size greater than PTRDIFFSSIZE_MAX is nonsensical, so we
can instead treat the element size as ptrdiff_tssize_t, leaving the right-hand
result the same signedness as the left.