diff options
author | Roman Zippel <zippel@linux-m68k.org> | 2004-03-10 05:07:45 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-03-09 21:07:45 -0800 |
commit | a4e9467d735cfdbcbe64902f9a3dd30c440c71fb (patch) | |
tree | d1fc766b33ad920f22ec9e64af6ea45acac2a805 /gcc | |
parent | 9aec7fb4a9fb06a694b629ca63690d92ba32060b (diff) | |
download | gcc-a4e9467d735cfdbcbe64902f9a3dd30c440c71fb.zip gcc-a4e9467d735cfdbcbe64902f9a3dd30c440c71fb.tar.gz gcc-a4e9467d735cfdbcbe64902f9a3dd30c440c71fb.tar.bz2 |
re PR bootstrap/12371 ([m68k-linux] bootstrap error in make compare)
2004-03-10 Roman Zippel <zippel@linux-m68k.org>
PR bootstrap/12371
* config/m68k/m68k.h (FIXED_REGISTERS): Add arg pointer.
(CALL_USED_REGISTERS): Likewise.
(REG_CLASS_CONTENTS): Likewise.
(REG_ALLOC_ORDER): New.
(REGNO_REG_CLASS): Use regno_reg_class.
* config/m68k/m68k.c: Add regno_reg_class array.
From-SVN: r79221
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 12 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.h | 29 |
3 files changed, 44 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 65b91f7..e6a791c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2004-03-10 Roman Zippel <zippel@linux-m68k.org> + + PR bootstrap/12371 + * config/m68k/m68k.h (FIXED_REGISTERS): Add arg pointer. + (CALL_USED_REGISTERS): Likewise. + (REG_CLASS_CONTENTS): Likewise. + (REG_ALLOC_ORDER): New. + (REGNO_REG_CLASS): Use regno_reg_class. + * config/m68k/m68k.c: Add regno_reg_class array. + 2004-03-09 Steve Ellcey <sje@cup.hp.com> * config/ia64/ia64.md (divsi3): Fix algorithm. diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index f289185..69a62a6 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -44,6 +44,18 @@ Boston, MA 02111-1307, USA. */ #include "debug.h" #include "flags.h" +enum reg_class regno_reg_class[] = +{ + DATA_REGS, DATA_REGS, DATA_REGS, DATA_REGS, + DATA_REGS, DATA_REGS, DATA_REGS, DATA_REGS, + ADDR_REGS, ADDR_REGS, ADDR_REGS, ADDR_REGS, + ADDR_REGS, ADDR_REGS, ADDR_REGS, ADDR_REGS, + FP_REGS, FP_REGS, FP_REGS, FP_REGS, + FP_REGS, FP_REGS, FP_REGS, FP_REGS, + ADDR_REGS +}; + + /* The ASM_DOT macro allows easy string pasting to handle the differences between MOTOROLA and MIT syntaxes in asm_fprintf(), which doesn't support the %. option. */ diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index 6f05bec..83ff83e 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -486,7 +486,10 @@ extern int target_flags; \ /* Floating point registers \ (if available). */ \ - 0, 0, 0, 0, 0, 0, 0, 0 } + 0, 0, 0, 0, 0, 0, 0, 0, \ + \ + /* Arg pointer. */ \ + 1 } /* 1 for registers not available across function calls. These must include the FIXED_REGISTERS and also any @@ -497,7 +500,18 @@ extern int target_flags; #define CALL_USED_REGISTERS \ {1, 1, 0, 0, 0, 0, 0, 0, \ 1, 1, 0, 0, 0, 0, 0, 1, \ - 1, 1, 0, 0, 0, 0, 0, 0 } + 1, 1, 0, 0, 0, 0, 0, 0, 1 } + +#define REG_ALLOC_ORDER \ +{ /* d0/d1/a0/a1 */ \ + 0, 1, 8, 9, \ + /* d2-d7 */ \ + 2, 3, 4, 5, 6, 7, \ + /* a2-a7/arg */ \ + 10, 11, 12, 13, 14, 15, 24, \ + /* fp0-fp7 */ \ + 16, 17, 18, 19, 20, 21, 22, 23\ +} /* Make sure everything's fine if we *don't* have a given processor. @@ -636,12 +650,12 @@ enum reg_class { { \ {0x00000000}, /* NO_REGS */ \ {0x000000ff}, /* DATA_REGS */ \ - {0x0000ff00}, /* ADDR_REGS */ \ + {0x0100ff00}, /* ADDR_REGS */ \ {0x00ff0000}, /* FP_REGS */ \ - {0x0000ffff}, /* GENERAL_REGS */ \ + {0x0100ffff}, /* GENERAL_REGS */ \ {0x00ff00ff}, /* DATA_OR_FP_REGS */ \ - {0x00ffff00}, /* ADDR_OR_FP_REGS */ \ - {0x00ffffff}, /* ALL_REGS */ \ + {0x01ffff00}, /* ADDR_OR_FP_REGS */ \ + {0x01ffffff}, /* ALL_REGS */ \ } /* The same information, inverted: @@ -649,7 +663,8 @@ enum reg_class { reg number REGNO. This could be a conditional expression or could index an array. */ -#define REGNO_REG_CLASS(REGNO) (((REGNO)>>3)+1) +extern enum reg_class regno_reg_class[]; +#define REGNO_REG_CLASS(REGNO) (regno_reg_class[(REGNO)]) /* The class value for index registers, and the one for base regs. */ |