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: PATCH: PR target/40470: unab le to find a register to spill i n class âSSE_FIRST_REGâ


Richard,

Yes, you are correct.

I got the regiter classes mixed up it's been so long since I last looked at the x86 backend in any detail.

Gragham

----- Original Message ----- From: "Richard Henderson" <rth@redhat.com>
To: "Graham Stott" <graham.stott@btinternet.com>
Cc: "H.J. Lu" <hjl.tools@gmail.com>; "Jeff Law" <law@redhat.com>; "Vladimir Makarov" <vmakarov@redhat.com>; "Steven Bosscher" <stevenb.gcc@gmail.com>; "Richard Guenther" <richard.guenther@gmail.com>; <gcc-patches@gcc.gnu.org>; <ubizjak@gmail.com>
Sent: Thursday, June 18, 2009 9:24 PM
Subject: Re: PATCH: PR target/40470: unable to find a register to spill in class âSSE_FIRST_REGâ



Graham Stott wrote:
Jeff,

cant_combine_insn_p looks to be where the combind should get rejected.

It uses CLASS_LIKELY_SPILLED (REGNO_REG_CLASS (REGNO (...)) to reject
the combine if it finds a HARD reg which is likely to be spilled.

Now on the x86 XMM0 is in MMX_REGS class which is NOT a likely spilled class hence it doen't get rejected.

Adding MMX_REGS to the set of likely spilled classes on x86 should do the
trick.

%xmm0 is *supposed* to be in SSE_FIRST_REG class. Are you sure you saw MMX_REG?

Now, CLASS_LIKELY_SPILLED_P in i386.h didn't get
updated when the SSE_FIRST_REG class was introduced,
so fixing that could fix the problem described.


r~


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