This is the mail archive of the 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] 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?


---	(revision 119613)
+++	(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)

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