This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR middle-end/28690, indexed load/store performance + reload bug
On Mon, Dec 11, 2006 at 06:40:59PM +0100, Michael Matz wrote:
> Okay, that makes sense I guess (the preferred class is all used already so
> it has to defer to the alternate class). ALL_REGS isn't shown in the
> dumps, and I confused it with NO_REGS (which actually is shown as "or
> none"), hence assumed wrongly that it got NO_REGS as alternate class.
> With ALL_REGS the choice of 65 makes sense and is expected and the
> predicate needs to be augmented by a check for reload_in_progress. The
> choice of ALL_REGS seems also to be correct to me.
Something like this?
Peter
Index: predicates.md
===================================================================
--- predicates.md (revision 119613)
+++ predicates.md (working copy)
@@ -84,7 +84,8 @@
;; Return 1 if op is a register that is not special.
(define_predicate "gpc_reg_operand"
(and (match_operand 0 "register_operand")
- (match_test "(GET_CODE (op) != REG
+ (match_test "(reload_in_progress
+ || GET_CODE (op) != REG
|| (REGNO (op) >= ARG_POINTER_REGNUM
&& !XER_REGNO_P (REGNO (op)))
|| REGNO (op) < MQ_REGNO)