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]

CLASS_CANNOT_CHANGE_MODE* redesign


Hi guys.

[Michael, Daniel.  Could you guys update the new register allocator?
It wasn't inherently obvious how to redesign it to work with this.  If
you can't then I can take a deeper look into it, but it should really be
a few quick changes.]

I've found this bug I need to fix by adding another class to
CLASS_CANNOT_CHANGE_MODE in the PPC port.  However, right now
CLASS_CANNOT_CHANGE_MODE_P applies to the class in CLASS_CANNOT_CHANGE_MODE
in its entirety.  We need a way of describing invalid mode changes,
and yet allow more than one class to have restrictions.

Richard suggested deprecating CLASS_CANNOT_CHANGE_MODE and adding a CLASS 
argument to CLASS_CANNOT_CHANGE_MODE_P.  This patch does this.  Of
course, now we have to redesign how C-C-C-M* is implemented internally.

With this patch, we accumulate every mode change where we used to check
CCCMP, and then use the CCCMP macro in regclass to verify wether the
actual mode change is valid or not.

I have updated all the ports that use CCCM.

Bootstrapped and regtested on PPC linux and alpha linux.
(Bootstrap of ia64-linux still going.  Gosh, is it slow....)
Built cc1 on x86 (a port that doesn't use CCCM*).
echristo built cc1 on mips as well (thanks).

Is this ok?

[Rth could you take a look at the line with FIXME.]

Attachment: x
Description: Text document


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