aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2004-03-10 05:07:45 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-03-09 21:07:45 -0800
commita4e9467d735cfdbcbe64902f9a3dd30c440c71fb (patch)
treed1fc766b33ad920f22ec9e64af6ea45acac2a805 /gcc
parent9aec7fb4a9fb06a694b629ca63690d92ba32060b (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/config/m68k/m68k.c12
-rw-r--r--gcc/config/m68k/m68k.h29
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. */