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

Reply via email to