This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]