Comparing 32-bit ptrdiff_t against 32-bit unsigned results in -Wsign-compare warnings for both GCC and Clang.
The warning for the cases in question appear to identify an issue where the ptrdiff_t value would be mutated via conversion to an unsigned type.
The warning is resolved by using the usual arithmetic conversions to safely preserve the value of the unsigned operand while trying to convert to a signed type. Host platforms where unsigned has the same width as unsigned long long will need to make a different change, but using an explicit cast has disadvantages that can be avoided for now.