diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/config/pa/pa32-regs.h | 13 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0ef43a3..d02a3a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-05-11 John David Anglin <dave@hiauly1.hia.nrc.ca> + + * pa/pa32-regs.h (HARD_REGNO_MODE_OK): Revise sets of general registers + used for DImode and TImode. + 2002-05-11 Neil Booth <neil@daikokuya.demon.co.uk> * cpplex.c (_cpp_lex_direct): When in a directive at EOF diff --git a/gcc/config/pa/pa32-regs.h b/gcc/config/pa/pa32-regs.h index 2cd0154..19553c9 100644 --- a/gcc/config/pa/pa32-regs.h +++ b/gcc/config/pa/pa32-regs.h @@ -164,8 +164,11 @@ : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)) /* Value is 1 if hard register REGNO can hold a value of machine-mode MODE. - On the HP-PA, the cpu registers can hold any mode. We - force this to be an even register is it cannot hold the full mode. */ + On the HP-PA, the cpu registers can hold any mode. For DImode, we + choose a set of general register that includes the incoming arguments + and the return value. We specify a set with no overlaps so that we don't + have to specify that the destination register in patterns using this mode + is an early clobber. */ #define HARD_REGNO_MODE_OK(REGNO, MODE) \ ((REGNO) == 0 ? (MODE) == CCmode || (MODE) == CCFPmode \ /* On 1.0 machines, don't allow wide non-fp modes in fp regs. */ \ @@ -173,9 +176,11 @@ ? GET_MODE_SIZE (MODE) <= 4 || GET_MODE_CLASS (MODE) == MODE_FLOAT \ : FP_REGNO_P (REGNO) \ ? GET_MODE_SIZE (MODE) <= 4 || ((REGNO) & 1) == 0 \ - /* Make wide modes be in aligned registers. */ \ : (GET_MODE_SIZE (MODE) <= UNITS_PER_WORD \ - || (GET_MODE_SIZE (MODE) <= 4 * UNITS_PER_WORD && ((REGNO) & 1) == 0))) + || (GET_MODE_SIZE (MODE) == 2 * UNITS_PER_WORD \ + && ((((REGNO) & 1) == 1 && (REGNO) <= 25) || (REGNO) == 28)) \ + || (GET_MODE_SIZE (MODE) == 4 * UNITS_PER_WORD \ + && (((REGNO) & 3) == 3 && (REGNO) <= 23)))) /* How to renumber registers for dbx and gdb. |
