This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: question regarding regrename and failure of 950704-1.c on main
- From: law at redhat dot com
- To: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Cc: rth at redhat dot com, gcc at gcc dot gnu dot org
- Date: Thu, 09 May 2002 15:42:15 -0600
- Subject: Re: question regarding regrename and failure of 950704-1.c on main
- Reply-to: law at redhat dot com
In message <200205092121.g49LLNtM005497@hiauly1.hia.nrc.ca>, "John David Anglin
" writes:
> > But why did we end up with DImode value in reg23? That's the
> > underlying problem -- HARD_REGNO_MODE_OK should have rejected
> > putting a DImode value in reg23.
>
> Two long longs are passed to f (x, y) in r23-r24 and r25-r26.
True, but if you look you'll find that they're packed in the wrong manner
as register arguments (ie the order for passing them in registers is not
the order in which we want to use them elsewhere). They get copied out and
repacked into proper order immediately after the prologue.
HARD_REGNO_MODE_OK should still have prevented regrename from mucking this up.
jeffk