This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR42861, VTA] bind values to expressions upon MO_VAL_USE
On Fri, 2010-01-29 at 00:37 +0100, Jakub Jelinek wrote:
> As the UNSPEC_DLTIND14R is clearly something you can't emit into debug info,
> the delegitimize address hook should transform
> (lo_sum x, (unspec [y] UNSPEC_DLTIND14R))
> into y.
>
> So something like:
>
> static rtx
> pa_delegitimize_address (rtx orig_x)
> {
> rtx x = delegitimize_mem_from_attrs (orig_x);
> if (GET_CODE (x) == LO_SUM
> && GET_CODE (XEXP (x, 1)) == UNSPEC
> && XINT (XEXP (x, 1), 1) == UNSPEC_DLTIND14R)
> return XVECEXP (XEXP (x, 1), 0, 0);
> return x;
> }
>
> could do the job.
>
> Jakub
This helped but I got an 'Illegal Instruction' trap when running
genmodes during stage2. I am looking to see what the actual difference
in the code was in the genmodes executable. I also tried adding:
if (GET_CODE (x) == MEM)
x = XEXP (x, 0);
after the call to delegitimize_mem_from_attrs and that caused a
compilation failure in decNumber.c:
/proj/opensrc/sje/reg/src/trunk/libdecnumber/decNumber.c:5491:3:
internal compiler error: in loc_cmp, at var-tracking.c:2495
And when I look at the rtx expressions and their types in loc_cmp I see:
(value/s/u:DI 3889 @80000001002fdf00/80000001002feba8)
and
(value/s/u:SI 3879 @80000001002f1928/80000001002e4868)
I am not sure why I have the type mismatch here.
Steve Ellcey
sje@cup.hp.com