This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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 \