[PATCH v2] vect: Relax gather/scatter detection by swapping offset sign.
Robin Dapp
rdapp.gcc@gmail.com
Mon Oct 13 12:03:53 GMT 2025
>> In case I'm not missing the point now, my assumption was that once we reach
>> pointer size overflow doesn't matter any more (and original offset == new
>> offset == sizetype is OK). I guess that's equivalent to relying on two's
>> complement arithmetic which not all targets have? Or can we rely on that
>> nowadays?
>
> We can, GCC doesn't support anything else (for TYPE_UNSIGNED).
Hmm, ok, just to make it more explicit for myself:
If we have an
offset * 2
where offset is an ssizetype (signed). Then, as usual, we assume that
undefined overflow does not happen. Consequently, a sizetype (unsigned),
wrapping operation is equivalent to the signed operation, even if the
new type is not larger. Do we need a diagnostic here to indicate we exploit
undefined overflow?
For
offset * 2
with offset being a sizetype (unsigned) we're wrapping and using a signed
offset type would only be correct if there is no wrap. Thus, we must check
if the new signed type is really 2x larger. That's what you were referring
to in the first place.
--
Regards
Robin
More information about the Gcc-patches
mailing list