diff options
author | James E Wilson <wilson@specifixinc.com> | 2004-11-11 13:20:22 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2004-11-11 13:20:22 -0800 |
commit | 2f71a82e6631d9e1a07e721a479359a1ad7ac0ea (patch) | |
tree | 2e5edf58382783e440dc0ff3b369b0a42ec468b6 /gcc | |
parent | fb60d5d766e38b1a48c69821fabd6f3d1ab5781e (diff) | |
download | gcc-2f71a82e6631d9e1a07e721a479359a1ad7ac0ea.zip gcc-2f71a82e6631d9e1a07e721a479359a1ad7ac0ea.tar.gz gcc-2f71a82e6631d9e1a07e721a479359a1ad7ac0ea.tar.bz2 |
Fix complex long double testsuite failures.
* config/ia64/ia64.h (HARD_REGNO_NREGS): Handle XCmode.
(HARD_REGNO_MODE_OK, MODES_TIEABLE_P, SECONDARY_MEMORY_NEEDED,
CLASS_MAX_NREGS): Likewise.
From-SVN: r90495
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.h | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c072a4..3d9f250 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-11 James E. Wilson <wilson@specifixinc.com> + + * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle XCmode. + (HARD_REGNO_MODE_OK, MODES_TIEABLE_P, SECONDARY_MEMORY_NEEDED, + CLASS_MAX_NREGS): Likewise. + 2004-11-11 Zdenek Dvorak <dvorakz@suse.cz> PR tree-optimization/17742 diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index aab51f8..bc03a1e 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -814,6 +814,7 @@ while (0) : PR_REGNO_P (REGNO) && (MODE) == BImode ? 2 \ : PR_REGNO_P (REGNO) && (MODE) == CCImode ? 1 \ : FR_REGNO_P (REGNO) && (MODE) == XFmode ? 1 \ + : FR_REGNO_P (REGNO) && (MODE) == XCmode ? 2 \ : (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) /* A C expression that is nonzero if it is permissible to store a value of mode @@ -828,7 +829,8 @@ while (0) (MODE) != TFmode \ : PR_REGNO_P (REGNO) ? \ (MODE) == BImode || GET_MODE_CLASS (MODE) == MODE_CC \ - : GR_REGNO_P (REGNO) ? (MODE) != CCImode && (MODE) != XFmode \ + : GR_REGNO_P (REGNO) ? \ + (MODE) != CCImode && (MODE) != XFmode && (MODE) != XCmode \ : AR_REGNO_P (REGNO) ? (MODE) == DImode \ : BR_REGNO_P (REGNO) ? (MODE) == DImode \ : 0) @@ -845,7 +847,8 @@ while (0) we can't tie it with any other modes. */ #define MODES_TIEABLE_P(MODE1, MODE2) \ (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2) \ - && (((MODE1) == XFmode) == ((MODE2) == XFmode)) \ + && ((((MODE1) == XFmode) || ((MODE1) == XCmode)) \ + == (((MODE2) == XFmode) || ((MODE2) == XCmode))) \ && (((MODE1) == BImode) == ((MODE2) == BImode))) /* Specify the modes required to caller save a given hard regno. @@ -1057,8 +1060,9 @@ enum reg_class with unions should be solved with the addressof fiddling done by movxf and friends. */ #define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \ - ((MODE) == XFmode && (((CLASS1) == GR_REGS && (CLASS2) == FR_REGS) \ - || ((CLASS1) == FR_REGS && (CLASS2) == GR_REGS))) + (((MODE) == XFmode || (MODE) == XCmode) \ + && (((CLASS1) == GR_REGS && (CLASS2) == FR_REGS) \ + || ((CLASS1) == FR_REGS && (CLASS2) == GR_REGS))) #endif /* A C expression for the maximum number of consecutive registers of @@ -1068,6 +1072,7 @@ enum reg_class #define CLASS_MAX_NREGS(CLASS, MODE) \ ((MODE) == BImode && (CLASS) == PR_REGS ? 2 \ : ((CLASS) == FR_REGS && (MODE) == XFmode) ? 1 \ + : ((CLASS) == FR_REGS && (MODE) == XCmode) ? 2 \ : (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) /* In FP regs, we can't change FP values to integer values and vice |