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: [PING^3] Fix reloading of paradoxical subregs into even-only registers


Hi H.J., 
On Mon, 18 Aug 2008, H.J. Lu wrote:

> Your patch breaks Linux/ia64:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37155

from the bugreport it's obvious that the ia64 port really wants to access 
reg 328 (sfp) in SImode.  But that mode currently is not accepted by 
HARD_REGNO_MODE_OK.  I can't see a reason why SImode is allowed for 
GR_REGNO_P, but not for GENERAL_REGNO_P (the only difference being exactly 
the register in question, FRAME_POINTER_REGNUM).  OTOH I don't know the 
ia64 port very well.  This patch fixes the testcase.  H.J. can you 
regstrap this?


Ciao,
Michael.
-- 
	ia64/ia64.h (HARD_REGNO_MODE_OK): Use GENERAL_REGNO_P, not 
        GR_REGNO_P.

Index: ia64/ia64.h
===================================================================
--- ia64/ia64.h	(revision 139232)
+++ ia64/ia64.h	(working copy)
@@ -659,7 +659,7 @@ while (0)
      (MODE) != TFmode 						\
    : PR_REGNO_P (REGNO) ?					\
      (MODE) == BImode || GET_MODE_CLASS (MODE) == MODE_CC	\
-   : GR_REGNO_P (REGNO) ?					\
+   : GENERAL_REGNO_P (REGNO) ?					\
      (MODE) != CCImode && (MODE) != XFmode && (MODE) != XCmode && (MODE) != RFmode \
    : AR_REGNO_P (REGNO) ? (MODE) == DImode			\
    : BR_REGNO_P (REGNO) ? (MODE) == DImode			\


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