> If we instead ask, is it sane for gcc to ever want to signed extend > in this case,
IIRC I've seen this due to the fact that pointer math is always signed, and since gcc has no way of having a PSImode-sized size_t, all pointer math is done in signed SImode, then the result is truncated to PSImode.