https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120434
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- If we wanted to do it in some GIMPLE pass (e.g. VRP or whatever other suitable late GIMPLE pass which uses the ranger), we'd need a target hook to choose preference of sign or zero extension and then probably based on that add artificial extra cast of the SSA_NAME with [0, signed_max] range (or subrange thereof) before it is cast to a wider integer type (or perhaps floating point too?) to the same precision type with the other signedness.