If the SafeWrap operation is a subtract, we negated the constant
to treat the subtract as an addition. The sext was based on the
operation being addition. So we really need to do (neg (sext (neg C)))
when promoting the constant. This is equivalent to (sext C) for
every value of C except the min signed value. For min signed value
we need to do (zext C) instead.
It turns out that the (neg C) is always less than or equal to 0. So the
original C had to be 0, positive, or min signed value. We know we need
to zext min signed value, but we can also zext 0 or positive and get the
same result as sign extending them. So we can always use a zero extend
for subtract.
Fixes PR55490.