| 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 */
|
|
|