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: IA-64 patch to fix ICE with long double after float HFA


On Mon, 2005-01-17 at 21:30, Richard Henderson wrote:
> Don't you also need to modify HARD_REGNO_MODE_OK to allow general registers?

The code already handled a general register destination, so I didn't add
anything fundamentally new.  I just added support for a general register
source also, which turns out to be necessary in an obscure case.

These cases happen only when we have XFmode arguments passed in general
registers, and the only thing we do with them is convert them to TImode
and move them to/from memory, possibly splitting them into a pair of
DImode modes.  We don't actually have XFmode general regs anywhere after
movxf is done.  movxf rewrites the modes to avoid this.

If we did modify HARD_REGNO_MODE_OK to accept XFmode in general regs,
then the register allocator would start allocating XFmode pseudos to
general regs, and we would have a real mess, because there is no easy
way to move XFmode values from general regs to FP regs.  So we don't
want to do that.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



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