>>> Why? Certainly Y = 8 has 31-bit (or less) precision. So it has the same >>> representation in SImode and DImode, and the test above on XEXP (x, 1) >>> succeeds. >> >> And then we permute conversion and addition, which leads to the issue you >> raised above. In another word, the current code permutes conversion >> and addition. > > No, only if we have ptr_extend.
Oops, hit send too early, I understand now what you mean. But even more so, let's make sure x32 is done right so that perhaps we can remove the bogus test on XEXP (x, 1) for other Pmode != ptr_mode targets, non-ptr_extend. Then we can worry perhaps of POINTERS_EXTEND_UNSIGNED < 0. Paolo