On Wed, Jul 13, 2011 at 18:39, H.J. Lu <hjl.to...@gmail.com> wrote: >> 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. It may be buggy as well, but let's make sure first that x32 is done right, then perhaps whoever cares can fix ptr_extend if it has to be fixed. I don't know the semantics of ia64 addp4 so I cannot tell. > I opened a new bug: > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49721 Good, thanks. > My current code looks like: > > case CONST: > temp = convert_memory_address_addr_space_1 (to_mode, XEXP (x, 0), > as, no_emit, > ignore_address_wrap_around); Here I stopped reading. It's not what I asked for, so at least you should say clearly _why_. Paolo