Stelian Pop <stel...@popies.net> writes:

>> I took a quick look at a similar case for x86, and the key step seems to
>> be a call to ptr_difference_const.  It converts the difference of two
>> ADDR_EXPRs to a constant.
>
> in my case ptr_difference_const doesn't get called at all, because
> the operands are no longer ADDR_EXPRs:

They are still ADDR_EXPRs where it counts on x86, as the code strips nop
conversions.  In your case the conversion from HImode to SImode seems to
be defeating that.

There is something strange in your trees.  Why did it convert the
pointers to "long int"?  Why did it not simply convert them to "int"?
The fact that they are going to be assigned to a "long int" variable
should not have caused them to convert to "long int".

Oh, I see it comes from PTRDIFF_TYPE, which defaults to "long int".  Try
doing #define PTRDIFF_TYPE "int" in your CPU.h file.

Ian

Reply via email to