Index: gcc/gcc/config/m32c/m32c.h |
diff --git a/gcc/gcc/config/m32c/m32c.h b/gcc/gcc/config/m32c/m32c.h |
index 55eb3e76fff35ba0714641edd82d26c8201f35a4..78e3115c291efdf9b8f7674747e82de02d9f08c9 100644 |
--- a/gcc/gcc/config/m32c/m32c.h |
+++ b/gcc/gcc/config/m32c/m32c.h |
@@ -48,12 +48,12 @@ |
thing when no CPU is specified, which defaults to R8C. */ |
#undef LIB_SPEC |
#define LIB_SPEC "-( -lc %{msim*:-lsim}%{!msim*:-lnosys} -) \ |
-%{msim*:%{!T*: %{mcpu=m32cm:-Tsim24.ld}%{mcpu=m32c:-Tsim24.ld} \ |
- %{!mcpu=m32cm:%{!mcpu=m32c:-Tsim16.ld}}}} \ |
-%{!T*:%{!msim*: %{mcpu=m16c:-Tm16c.ld} \ |
- %{mcpu=m32cm:-Tm32cm.ld} \ |
- %{mcpu=m32c:-Tm32c.ld} \ |
- %{!mcpu=m16c:%{!mcpu=m32cm:%{!mcpu=m32c:-Tr8c.ld}}}}} \ |
+%{msim*:%{!T*: %{mcpu=m32cm:%Tsim24.ld}%{mcpu=m32c:%Tsim24.ld} \ |
+ %{!mcpu=m32cm:%{!mcpu=m32c:%Tsim16.ld}}}} \ |
+%{!T*:%{!msim*: %{mcpu=m16c:%Tm16c.ld} \ |
+ %{mcpu=m32cm:%Tm32cm.ld} \ |
+ %{mcpu=m32c:%Tm32c.ld} \ |
+ %{!mcpu=m16c:%{!mcpu=m32cm:%{!mcpu=m32c:%Tr8c.ld}}}}} \ |
" |
/* Run-time Target Specification */ |
@@ -100,7 +100,7 @@ extern int target_memregs; |
/* Defining data structures for per-function information */ |
-typedef struct machine_function GTY (()) |
+typedef struct GTY (()) machine_function |
{ |
/* How much we adjust the stack when returning from an exception |
handler. */ |
@@ -189,6 +189,9 @@ machine_function; |
#undef PTRDIFF_TYPE |
#define PTRDIFF_TYPE (TARGET_A16 ? "int" : "long int") |
+#undef UINTPTR_TYPE |
+#define UINTPTR_TYPE (TARGET_A16 ? "unsigned int" : "long unsigned int") |
+ |
/* REGISTER USAGE */ |
/* Register Basics */ |
@@ -274,6 +277,7 @@ machine_function; |
{ 0x00000002 }, /* R2 - r2 */\ |
{ 0x00000008 }, /* R3 - r3 */\ |
{ 0x00000003 }, /* R02 - r0r2 */\ |
+ { 0x0000000c }, /* R13 - r1r3 */\ |
{ 0x00000005 }, /* HL - r0 r1 */\ |
{ 0x00000005 }, /* QI - r0 r1 */\ |
{ 0x0000000a }, /* R23 - r2 r3 */\ |
@@ -313,6 +317,7 @@ enum reg_class |
R2_REGS, |
R3_REGS, |
R02_REGS, |
+ R13_REGS, |
HL_REGS, |
QI_REGS, |
R23_REGS, |
@@ -354,6 +359,7 @@ enum reg_class |
"R2_REGS", \ |
"R3_REGS", \ |
"R02_REGS", \ |
+"R13_REGS", \ |
"HL_REGS", \ |
"QI_REGS", \ |
"R23_REGS", \ |
@@ -485,17 +491,11 @@ enum reg_class |
/* Eliminating Frame Pointer and Arg Pointer */ |
-/* If the frame pointer isn't used, we detect it manually. But the |
- stack pointer doesn't have as flexible addressing as the frame |
- pointer, so we always assume we have it. */ |
-#define FRAME_POINTER_REQUIRED 1 |
- |
#define ELIMINABLE_REGS \ |
{{AP_REGNO, SP_REGNO}, \ |
{AP_REGNO, FB_REGNO}, \ |
{FB_REGNO, SP_REGNO}} |
-#define CAN_ELIMINATE(FROM,TO) 1 |
#define INITIAL_ELIMINATION_OFFSET(FROM,TO,VAR) \ |
(VAR) = m32c_initial_elimination_offset(FROM,TO) |
@@ -533,10 +533,7 @@ typedef struct m32c_cumulative_args |
/* How Scalar Function Values Are Returned */ |
-#define FUNCTION_VALUE(VT,F) m32c_function_value (VT, F) |
-#define LIBCALL_VALUE(MODE) m32c_libcall_value (MODE) |
- |
-#define FUNCTION_VALUE_REGNO_P(r) ((r) == R0_REGNO || (r) == MEM0_REGNO) |
+#define FUNCTION_VALUE_REGNO_P(r) m32c_function_value_regno_p (r) |
/* How Large Values Are Returned */ |
@@ -558,13 +555,11 @@ typedef struct m32c_cumulative_args |
#define TRAMPOLINE_SIZE m32c_trampoline_size () |
#define TRAMPOLINE_ALIGNMENT m32c_trampoline_alignment () |
-#define INITIALIZE_TRAMPOLINE(a,fn,sc) m32c_initialize_trampoline (a, fn, sc) |
/* Addressing Modes */ |
#define HAVE_PRE_DECREMENT 1 |
#define HAVE_POST_INCREMENT 1 |
-#define CONSTANT_ADDRESS_P(X) CONSTANT_P(X) |
#define MAX_REGS_PER_ADDRESS 1 |
/* This is passed to the macros below, so that they can be implemented |
@@ -575,25 +570,15 @@ typedef struct m32c_cumulative_args |
#define REG_OK_STRICT_V 0 |
#endif |
-#define GO_IF_LEGITIMATE_ADDRESS(MODE,X,LABEL) \ |
- if (m32c_legitimate_address_p (MODE, X, REG_OK_STRICT_V)) \ |
- goto LABEL; |
- |
#define REG_OK_FOR_BASE_P(X) m32c_reg_ok_for_base_p (X, REG_OK_STRICT_V) |
#define REG_OK_FOR_INDEX_P(X) 0 |
/* #define FIND_BASE_TERM(X) when we do unspecs for symrefs */ |
-#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN) \ |
- if (m32c_legitimize_address(&(X),OLDX,MODE)) \ |
- goto WIN; |
- |
#define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \ |
if (m32c_legitimize_reload_address(&(X),MODE,OPNUM,TYPE,IND_LEVELS)) \ |
goto WIN; |
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL) |
- |
#define LEGITIMATE_CONSTANT_P(X) m32c_legitimate_constant_p (X) |
/* Condition Code Status */ |