Commit a21eaf5e by Nick Clifton Committed by Nick Clifton

stormy16.c: Use REG_P, MEM_P and CONST_INT_P where appropriate.

        * config/stormy16/stormy16.c: Use REG_P, MEM_P and CONST_INT_P
        where appropriate.
        (xstormy16_legitimate_address_p): Use true and false instead of 1
        and 0.
        (xstormy16_expand_prologue): Delete unused local variable 'insn'.
        (xstormy16_function_arg): Use FIRST_ARGUMENT_REGNUM in place of
        magic constant 2.
        (xstormy16_expand_call): Fix comment at start of function.

From-SVN: r163722
parent 166d08bd
2010-09-01 Nick Clifton <nickc@redhat.com> 2010-09-01 Nick Clifton <nickc@redhat.com>
* config/stormy16/stormy16.c: Use REG_P, MEM_P and CONST_INT_P
where appropriate.
(xstormy16_legitimate_address_p): Use true and false instead of 1
and 0.
(xstormy16_expand_prologue): Delete unused local variable 'insn'.
(xstormy16_function_arg): Use FIRST_ARGUMENT_REGNUM in place of
magic constant 2.
(xstormy16_expand_call): Fix comment at start of function.
2010-09-01 Nick Clifton <nickc@redhat.com>
* config/rx/rx.c (rx_expand_prologue): Do not adjust frame size * config/rx/rx.c (rx_expand_prologue): Do not adjust frame size
when pushing accumulator register. when pushing accumulator register.
(rx_get_stack_layout): Always save call clobbered registers inside (rx_get_stack_layout): Always save call clobbered registers inside
......
...@@ -104,7 +104,7 @@ xstormy16_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -104,7 +104,7 @@ xstormy16_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
static int static int
xstormy16_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED) xstormy16_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
{ {
return (GET_CODE (x) == CONST_INT ? 2 return (CONST_INT_P (x) ? 2
: GET_CODE (x) == PLUS ? 7 : GET_CODE (x) == PLUS ? 7
: 5); : 5);
} }
...@@ -292,7 +292,7 @@ xstormy16_output_cbranch_hi (rtx op, const char *label, int reversed, rtx insn) ...@@ -292,7 +292,7 @@ xstormy16_output_cbranch_hi (rtx op, const char *label, int reversed, rtx insn)
code = GET_CODE (op); code = GET_CODE (op);
if (GET_CODE (XEXP (op, 0)) != REG) if (! REG_P (XEXP (op, 0)))
{ {
code = swap_condition (code); code = swap_condition (code);
operands = "%3,%2"; operands = "%3,%2";
...@@ -377,7 +377,7 @@ xstormy16_output_cbranch_si (rtx op, const char *label, int reversed, rtx insn) ...@@ -377,7 +377,7 @@ xstormy16_output_cbranch_si (rtx op, const char *label, int reversed, rtx insn)
{ {
int regnum; int regnum;
gcc_assert (GET_CODE (XEXP (op, 0)) == REG); gcc_assert (REG_P (XEXP (op, 0)));
regnum = REGNO (XEXP (op, 0)); regnum = REGNO (XEXP (op, 0));
sprintf (prevop, "or %s,%s", reg_names[regnum], reg_names[regnum+1]); sprintf (prevop, "or %s,%s", reg_names[regnum], reg_names[regnum+1]);
...@@ -455,13 +455,13 @@ xstormy16_output_cbranch_si (rtx op, const char *label, int reversed, rtx insn) ...@@ -455,13 +455,13 @@ xstormy16_output_cbranch_si (rtx op, const char *label, int reversed, rtx insn)
enum reg_class enum reg_class
xstormy16_secondary_reload_class (enum reg_class rclass, xstormy16_secondary_reload_class (enum reg_class rclass,
enum machine_mode mode, enum machine_mode mode ATTRIBUTE_UNUSED,
rtx x) rtx x)
{ {
/* This chip has the interesting property that only the first eight /* This chip has the interesting property that only the first eight
registers can be moved to/from memory. */ registers can be moved to/from memory. */
if ((GET_CODE (x) == MEM if ((MEM_P (x)
|| ((GET_CODE (x) == SUBREG || GET_CODE (x) == REG) || ((GET_CODE (x) == SUBREG || REG_P (x))
&& (true_regnum (x) == -1 && (true_regnum (x) == -1
|| true_regnum (x) >= FIRST_PSEUDO_REGISTER))) || true_regnum (x) >= FIRST_PSEUDO_REGISTER)))
&& ! reg_class_subset_p (rclass, EIGHT_REGS)) && ! reg_class_subset_p (rclass, EIGHT_REGS))
...@@ -473,8 +473,7 @@ xstormy16_secondary_reload_class (enum reg_class rclass, ...@@ -473,8 +473,7 @@ xstormy16_secondary_reload_class (enum reg_class rclass,
enum reg_class enum reg_class
xstormy16_preferred_reload_class (rtx x, enum reg_class rclass) xstormy16_preferred_reload_class (rtx x, enum reg_class rclass)
{ {
if (rclass == GENERAL_REGS if (rclass == GENERAL_REGS && MEM_P (x))
&& GET_CODE (x) == MEM)
return EIGHT_REGS; return EIGHT_REGS;
return rclass; return rclass;
...@@ -489,16 +488,16 @@ xstormy16_below100_symbol (rtx x, ...@@ -489,16 +488,16 @@ xstormy16_below100_symbol (rtx x,
{ {
if (GET_CODE (x) == CONST) if (GET_CODE (x) == CONST)
x = XEXP (x, 0); x = XEXP (x, 0);
if (GET_CODE (x) == PLUS if (GET_CODE (x) == PLUS && CONST_INT_P (XEXP (x, 1)))
&& GET_CODE (XEXP (x, 1)) == CONST_INT)
x = XEXP (x, 0); x = XEXP (x, 0);
if (GET_CODE (x) == SYMBOL_REF) if (GET_CODE (x) == SYMBOL_REF)
return (SYMBOL_REF_FLAGS (x) & SYMBOL_FLAG_XSTORMY16_BELOW100) != 0; return (SYMBOL_REF_FLAGS (x) & SYMBOL_FLAG_XSTORMY16_BELOW100) != 0;
if (GET_CODE (x) == CONST_INT) if (CONST_INT_P (x))
{ {
HOST_WIDE_INT i = INTVAL (x); HOST_WIDE_INT i = INTVAL (x);
if ((i >= 0x0000 && i <= 0x00ff) if ((i >= 0x0000 && i <= 0x00ff)
|| (i >= 0x7f00 && i <= 0x7fff)) || (i >= 0x7f00 && i <= 0x7fff))
return 1; return 1;
...@@ -512,7 +511,7 @@ xstormy16_below100_symbol (rtx x, ...@@ -512,7 +511,7 @@ xstormy16_below100_symbol (rtx x,
int int
xstormy16_splittable_below100_operand (rtx x, enum machine_mode mode) xstormy16_splittable_below100_operand (rtx x, enum machine_mode mode)
{ {
if (GET_CODE (x) == MEM && MEM_VOLATILE_P (x)) if (MEM_P (x) && MEM_VOLATILE_P (x))
return 0; return 0;
return xstormy16_below100_operand (x, mode); return xstormy16_below100_operand (x, mode);
} }
...@@ -541,17 +540,19 @@ xstormy16_expand_iorqi3 (rtx *operands) ...@@ -541,17 +540,19 @@ xstormy16_expand_iorqi3 (rtx *operands)
return; return;
} }
if (GET_CODE (in) != REG) if (! REG_P (in))
in = copy_to_mode_reg (QImode, in); in = copy_to_mode_reg (QImode, in);
if (GET_CODE (val) != REG
&& GET_CODE (val) != CONST_INT) if (! REG_P (val) && ! CONST_INT_P (val))
val = copy_to_mode_reg (QImode, val); val = copy_to_mode_reg (QImode, val);
if (GET_CODE (out) != REG)
if (! REG_P (out))
out = gen_reg_rtx (QImode); out = gen_reg_rtx (QImode);
in = simplify_gen_subreg (HImode, in, QImode, 0); in = simplify_gen_subreg (HImode, in, QImode, 0);
outsub = simplify_gen_subreg (HImode, out, QImode, 0); outsub = simplify_gen_subreg (HImode, out, QImode, 0);
if (GET_CODE (val) != CONST_INT)
if (! CONST_INT_P (val))
val = simplify_gen_subreg (HImode, val, QImode, 0); val = simplify_gen_subreg (HImode, val, QImode, 0);
emit_insn (gen_iorhi3 (outsub, in, val)); emit_insn (gen_iorhi3 (outsub, in, val));
...@@ -584,17 +585,19 @@ xstormy16_expand_andqi3 (rtx *operands) ...@@ -584,17 +585,19 @@ xstormy16_expand_andqi3 (rtx *operands)
return; return;
} }
if (GET_CODE (in) != REG) if (! REG_P (in))
in = copy_to_mode_reg (QImode, in); in = copy_to_mode_reg (QImode, in);
if (GET_CODE (val) != REG
&& GET_CODE (val) != CONST_INT) if (! REG_P (val) && ! CONST_INT_P (val))
val = copy_to_mode_reg (QImode, val); val = copy_to_mode_reg (QImode, val);
if (GET_CODE (out) != REG)
if (! REG_P (out))
out = gen_reg_rtx (QImode); out = gen_reg_rtx (QImode);
in = simplify_gen_subreg (HImode, in, QImode, 0); in = simplify_gen_subreg (HImode, in, QImode, 0);
outsub = simplify_gen_subreg (HImode, out, QImode, 0); outsub = simplify_gen_subreg (HImode, out, QImode, 0);
if (GET_CODE (val) != CONST_INT)
if (! CONST_INT_P (val))
val = simplify_gen_subreg (HImode, val, QImode, 0); val = simplify_gen_subreg (HImode, val, QImode, 0);
emit_insn (gen_andhi3 (outsub, in, val)); emit_insn (gen_andhi3 (outsub, in, val));
...@@ -604,11 +607,11 @@ xstormy16_expand_andqi3 (rtx *operands) ...@@ -604,11 +607,11 @@ xstormy16_expand_andqi3 (rtx *operands)
} }
#define LEGITIMATE_ADDRESS_INTEGER_P(X, OFFSET) \ #define LEGITIMATE_ADDRESS_INTEGER_P(X, OFFSET) \
(GET_CODE (X) == CONST_INT \ (CONST_INT_P (X) \
&& (unsigned HOST_WIDE_INT) (INTVAL (X) + (OFFSET) + 2048) < 4096) && (unsigned HOST_WIDE_INT) (INTVAL (X) + (OFFSET) + 2048) < 4096)
#define LEGITIMATE_ADDRESS_CONST_INT_P(X, OFFSET) \ #define LEGITIMATE_ADDRESS_CONST_INT_P(X, OFFSET) \
(GET_CODE (X) == CONST_INT \ (CONST_INT_P (X) \
&& INTVAL (X) + (OFFSET) >= 0 \ && INTVAL (X) + (OFFSET) >= 0 \
&& INTVAL (X) + (OFFSET) < 0x8000 \ && INTVAL (X) + (OFFSET) < 0x8000 \
&& (INTVAL (X) + (OFFSET) < 0x100 || INTVAL (X) + (OFFSET) >= 0x7F00)) && (INTVAL (X) + (OFFSET) < 0x100 || INTVAL (X) + (OFFSET) >= 0x7F00))
...@@ -618,31 +621,31 @@ xstormy16_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, ...@@ -618,31 +621,31 @@ xstormy16_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED,
rtx x, bool strict) rtx x, bool strict)
{ {
if (LEGITIMATE_ADDRESS_CONST_INT_P (x, 0)) if (LEGITIMATE_ADDRESS_CONST_INT_P (x, 0))
return 1; return true;
if (GET_CODE (x) == PLUS if (GET_CODE (x) == PLUS
&& LEGITIMATE_ADDRESS_INTEGER_P (XEXP (x, 1), 0)) && LEGITIMATE_ADDRESS_INTEGER_P (XEXP (x, 1), 0))
{ {
x = XEXP (x, 0); x = XEXP (x, 0);
/* PR 31232: Do not allow INT+INT as an address. */ /* PR 31232: Do not allow INT+INT as an address. */
if (GET_CODE (x) == CONST_INT) if (CONST_INT_P (x))
return 0; return false;
} }
if ((GET_CODE (x) == PRE_MODIFY if ((GET_CODE (x) == PRE_MODIFY && CONST_INT_P (XEXP (XEXP (x, 1), 1)))
&& GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT)
|| GET_CODE (x) == POST_INC || GET_CODE (x) == POST_INC
|| GET_CODE (x) == PRE_DEC) || GET_CODE (x) == PRE_DEC)
x = XEXP (x, 0); x = XEXP (x, 0);
if (GET_CODE (x) == REG && REGNO_OK_FOR_BASE_P (REGNO (x)) if (REG_P (x)
&& REGNO_OK_FOR_BASE_P (REGNO (x))
&& (! strict || REGNO (x) < FIRST_PSEUDO_REGISTER)) && (! strict || REGNO (x) < FIRST_PSEUDO_REGISTER))
return 1; return true;
if (xstormy16_below100_symbol (x, mode)) if (xstormy16_below100_symbol (x, mode))
return 1; return true;
return 0; return false;
} }
/* Return nonzero if memory address X (an RTX) can have different /* Return nonzero if memory address X (an RTX) can have different
...@@ -696,20 +699,20 @@ xstormy16_extra_constraint_p (rtx x, int c) ...@@ -696,20 +699,20 @@ xstormy16_extra_constraint_p (rtx x, int c)
{ {
/* 'Q' is for pushes. */ /* 'Q' is for pushes. */
case 'Q': case 'Q':
return (GET_CODE (x) == MEM return (MEM_P (x)
&& GET_CODE (XEXP (x, 0)) == POST_INC && GET_CODE (XEXP (x, 0)) == POST_INC
&& XEXP (XEXP (x, 0), 0) == stack_pointer_rtx); && XEXP (XEXP (x, 0), 0) == stack_pointer_rtx);
/* 'R' is for pops. */ /* 'R' is for pops. */
case 'R': case 'R':
return (GET_CODE (x) == MEM return (MEM_P (x)
&& GET_CODE (XEXP (x, 0)) == PRE_DEC && GET_CODE (XEXP (x, 0)) == PRE_DEC
&& XEXP (XEXP (x, 0), 0) == stack_pointer_rtx); && XEXP (XEXP (x, 0), 0) == stack_pointer_rtx);
/* 'S' is for immediate memory addresses. */ /* 'S' is for immediate memory addresses. */
case 'S': case 'S':
return (GET_CODE (x) == MEM return (MEM_P (x)
&& GET_CODE (XEXP (x, 0)) == CONST_INT && CONST_INT_P (XEXP (x, 0))
&& xstormy16_legitimate_address_p (VOIDmode, XEXP (x, 0), 0)); && xstormy16_legitimate_address_p (VOIDmode, XEXP (x, 0), 0));
/* 'T' is for Rx. */ /* 'T' is for Rx. */
...@@ -720,14 +723,12 @@ xstormy16_extra_constraint_p (rtx x, int c) ...@@ -720,14 +723,12 @@ xstormy16_extra_constraint_p (rtx x, int c)
/* 'U' is for CONST_INT values not between 2 and 15 inclusive, /* 'U' is for CONST_INT values not between 2 and 15 inclusive,
for allocating a scratch register for 32-bit shifts. */ for allocating a scratch register for 32-bit shifts. */
case 'U': case 'U':
return (GET_CODE (x) == CONST_INT return (CONST_INT_P (x) && (! IN_RANGE (INTVAL (x), 2, 15)));
&& (INTVAL (x) < 2 || INTVAL (x) > 15));
/* 'Z' is for CONST_INT value zero. This is for adding zero to /* 'Z' is for CONST_INT value zero. This is for adding zero to
a register in addhi3, which would otherwise require a carry. */ a register in addhi3, which would otherwise require a carry. */
case 'Z': case 'Z':
return (GET_CODE (x) == CONST_INT return (CONST_INT_P (x) && (INTVAL (x) == 0));
&& (INTVAL (x) == 0));
case 'W': case 'W':
return xstormy16_below100_operand (x, GET_MODE (x)); return xstormy16_below100_operand (x, GET_MODE (x));
...@@ -770,7 +771,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -770,7 +771,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src)
&& general_operand (src, mode)); && general_operand (src, mode));
/* This case is not supported below, and shouldn't be generated. */ /* This case is not supported below, and shouldn't be generated. */
gcc_assert (GET_CODE (dest) != MEM || GET_CODE (src) != MEM); gcc_assert (! MEM_P (dest) || ! MEM_P (src));
/* This case is very very bad after reload, so trap it now. */ /* This case is very very bad after reload, so trap it now. */
gcc_assert (GET_CODE (dest) != SUBREG && GET_CODE (src) != SUBREG); gcc_assert (GET_CODE (dest) != SUBREG && GET_CODE (src) != SUBREG);
...@@ -785,7 +786,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -785,7 +786,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src)
must be reversed. */ must be reversed. */
direction = 1; direction = 1;
if (GET_CODE (dest) == MEM) if (MEM_P (dest))
{ {
mem_operand = XEXP (dest, 0); mem_operand = XEXP (dest, 0);
dest_modifies = side_effects_p (mem_operand); dest_modifies = side_effects_p (mem_operand);
...@@ -798,7 +799,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -798,7 +799,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src)
MEM_VOLATILE_P (dest) = 0; MEM_VOLATILE_P (dest) = 0;
} }
} }
else if (GET_CODE (src) == MEM) else if (MEM_P (src))
{ {
mem_operand = XEXP (src, 0); mem_operand = XEXP (src, 0);
src_modifies = side_effects_p (mem_operand); src_modifies = side_effects_p (mem_operand);
...@@ -816,8 +817,8 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -816,8 +817,8 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src)
if (mem_operand == NULL_RTX) if (mem_operand == NULL_RTX)
{ {
if (GET_CODE (src) == REG if (REG_P (src)
&& GET_CODE (dest) == REG && REG_P (dest)
&& reg_overlap_mentioned_p (dest, src) && reg_overlap_mentioned_p (dest, src)
&& REGNO (dest) > REGNO (src)) && REGNO (dest) > REGNO (src))
direction = -1; direction = -1;
...@@ -826,12 +827,11 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -826,12 +827,11 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src)
|| (GET_CODE (mem_operand) == PLUS || (GET_CODE (mem_operand) == PLUS
&& GET_CODE (XEXP (mem_operand, 0)) == PRE_DEC)) && GET_CODE (XEXP (mem_operand, 0)) == PRE_DEC))
direction = -1; direction = -1;
else if (GET_CODE (src) == MEM else if (MEM_P (src) && reg_overlap_mentioned_p (dest, src))
&& reg_overlap_mentioned_p (dest, src))
{ {
int regno; int regno;
gcc_assert (GET_CODE (dest) == REG); gcc_assert (REG_P (dest));
regno = REGNO (dest); regno = REGNO (dest);
gcc_assert (refers_to_regno_p (regno, regno + num_words, gcc_assert (refers_to_regno_p (regno, regno + num_words,
...@@ -887,7 +887,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -887,7 +887,7 @@ xstormy16_split_move (enum machine_mode mode, rtx dest, rtx src)
void void
xstormy16_expand_move (enum machine_mode mode, rtx dest, rtx src) xstormy16_expand_move (enum machine_mode mode, rtx dest, rtx src)
{ {
if ((GET_CODE (dest) == MEM) && (GET_CODE (XEXP (dest, 0)) == PRE_MODIFY)) if (MEM_P (dest) && (GET_CODE (XEXP (dest, 0)) == PRE_MODIFY))
{ {
rtx pmv = XEXP (dest, 0); rtx pmv = XEXP (dest, 0);
rtx dest_reg = XEXP (pmv, 0); rtx dest_reg = XEXP (pmv, 0);
...@@ -898,7 +898,7 @@ xstormy16_expand_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -898,7 +898,7 @@ xstormy16_expand_move (enum machine_mode mode, rtx dest, rtx src)
dest = gen_rtx_MEM (mode, dest_reg); dest = gen_rtx_MEM (mode, dest_reg);
emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set, clobber))); emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set, clobber)));
} }
else if ((GET_CODE (src) == MEM) && (GET_CODE (XEXP (src, 0)) == PRE_MODIFY)) else if (MEM_P (src) && (GET_CODE (XEXP (src, 0)) == PRE_MODIFY))
{ {
rtx pmv = XEXP (src, 0); rtx pmv = XEXP (src, 0);
rtx src_reg = XEXP (pmv, 0); rtx src_reg = XEXP (pmv, 0);
...@@ -913,11 +913,11 @@ xstormy16_expand_move (enum machine_mode mode, rtx dest, rtx src) ...@@ -913,11 +913,11 @@ xstormy16_expand_move (enum machine_mode mode, rtx dest, rtx src)
/* There are only limited immediate-to-memory move instructions. */ /* There are only limited immediate-to-memory move instructions. */
if (! reload_in_progress if (! reload_in_progress
&& ! reload_completed && ! reload_completed
&& GET_CODE (dest) == MEM && MEM_P (dest)
&& (GET_CODE (XEXP (dest, 0)) != CONST_INT && (! CONST_INT_P (XEXP (dest, 0))
|| ! xstormy16_legitimate_address_p (mode, XEXP (dest, 0), 0)) || ! xstormy16_legitimate_address_p (mode, XEXP (dest, 0), 0))
&& ! xstormy16_below100_operand (dest, mode) && ! xstormy16_below100_operand (dest, mode)
&& GET_CODE (src) != REG && ! REG_P (src)
&& GET_CODE (src) != SUBREG) && GET_CODE (src) != SUBREG)
src = copy_to_mode_reg (mode, src); src = copy_to_mode_reg (mode, src);
...@@ -1194,7 +1194,7 @@ void ...@@ -1194,7 +1194,7 @@ void
xstormy16_expand_epilogue (void) xstormy16_expand_epilogue (void)
{ {
struct xstormy16_stack_layout layout; struct xstormy16_stack_layout layout;
rtx mem_pop_rtx, insn; rtx mem_pop_rtx;
int regno; int regno;
const int ifun = xstormy16_interrupt_function_p (); const int ifun = xstormy16_interrupt_function_p ();
...@@ -1284,7 +1284,7 @@ xstormy16_function_arg (CUMULATIVE_ARGS cum, enum machine_mode mode, ...@@ -1284,7 +1284,7 @@ xstormy16_function_arg (CUMULATIVE_ARGS cum, enum machine_mode mode,
if (targetm.calls.must_pass_in_stack (mode, type) if (targetm.calls.must_pass_in_stack (mode, type)
|| cum + XSTORMY16_WORD_SIZE (type, mode) > NUM_ARGUMENT_REGISTERS) || cum + XSTORMY16_WORD_SIZE (type, mode) > NUM_ARGUMENT_REGISTERS)
return NULL_RTX; return NULL_RTX;
return gen_rtx_REG (mode, cum + 2); return gen_rtx_REG (mode, cum + FIRST_ARGUMENT_REGISTER);
} }
/* Build the va_list type. /* Build the va_list type.
...@@ -1565,7 +1565,7 @@ xstormy16_asm_output_aligned_common (FILE *stream, ...@@ -1565,7 +1565,7 @@ xstormy16_asm_output_aligned_common (FILE *stream,
rtx symbol; rtx symbol;
if (mem != NULL_RTX if (mem != NULL_RTX
&& GET_CODE (mem) == MEM && MEM_P (mem)
&& GET_CODE (symbol = XEXP (mem, 0)) == SYMBOL_REF && GET_CODE (symbol = XEXP (mem, 0)) == SYMBOL_REF
&& SYMBOL_REF_FLAGS (symbol) & SYMBOL_FLAG_XSTORMY16_BELOW100) && SYMBOL_REF_FLAGS (symbol) & SYMBOL_FLAG_XSTORMY16_BELOW100)
{ {
...@@ -1693,13 +1693,13 @@ xstormy16_print_operand_address (FILE *file, rtx address) ...@@ -1693,13 +1693,13 @@ xstormy16_print_operand_address (FILE *file, rtx address)
int pre_dec, post_inc; int pre_dec, post_inc;
/* There are a few easy cases. */ /* There are a few easy cases. */
if (GET_CODE (address) == CONST_INT) if (CONST_INT_P (address))
{ {
fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (address) & 0xFFFF); fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (address) & 0xFFFF);
return; return;
} }
if (CONSTANT_P (address) || GET_CODE (address) == CODE_LABEL) if (CONSTANT_P (address) || LABEL_P (address))
{ {
output_addr_const (file, address); output_addr_const (file, address);
return; return;
...@@ -1709,7 +1709,7 @@ xstormy16_print_operand_address (FILE *file, rtx address) ...@@ -1709,7 +1709,7 @@ xstormy16_print_operand_address (FILE *file, rtx address)
(plus:HI (pre_dec:HI (reg:HI ...)) (const_int ...)). */ (plus:HI (pre_dec:HI (reg:HI ...)) (const_int ...)). */
if (GET_CODE (address) == PLUS) if (GET_CODE (address) == PLUS)
{ {
gcc_assert (GET_CODE (XEXP (address, 1)) == CONST_INT); gcc_assert (CONST_INT_P (XEXP (address, 1)));
offset = INTVAL (XEXP (address, 1)); offset = INTVAL (XEXP (address, 1));
address = XEXP (address, 0); address = XEXP (address, 0);
} }
...@@ -1721,7 +1721,7 @@ xstormy16_print_operand_address (FILE *file, rtx address) ...@@ -1721,7 +1721,7 @@ xstormy16_print_operand_address (FILE *file, rtx address)
if (pre_dec || post_inc) if (pre_dec || post_inc)
address = XEXP (address, 0); address = XEXP (address, 0);
gcc_assert (GET_CODE (address) == REG); gcc_assert (REG_P (address));
fputc ('(', file); fputc ('(', file);
if (pre_dec) if (pre_dec)
...@@ -1749,7 +1749,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code) ...@@ -1749,7 +1749,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code)
HOST_WIDE_INT xx = 1; HOST_WIDE_INT xx = 1;
HOST_WIDE_INT l; HOST_WIDE_INT l;
if (GET_CODE (x) == CONST_INT) if (CONST_INT_P (x))
xx = INTVAL (x); xx = INTVAL (x);
else else
output_operand_lossage ("'B' operand is not constant"); output_operand_lossage ("'B' operand is not constant");
...@@ -1789,7 +1789,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code) ...@@ -1789,7 +1789,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code)
/* Print the symbol without a surrounding @fptr(). */ /* Print the symbol without a surrounding @fptr(). */
if (GET_CODE (x) == SYMBOL_REF) if (GET_CODE (x) == SYMBOL_REF)
assemble_name (file, XSTR (x, 0)); assemble_name (file, XSTR (x, 0));
else if (GET_CODE (x) == LABEL_REF) else if (LABEL_P (x))
output_asm_label (x); output_asm_label (x);
else else
xstormy16_print_operand_address (file, x); xstormy16_print_operand_address (file, x);
...@@ -1802,7 +1802,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code) ...@@ -1802,7 +1802,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code)
{ {
HOST_WIDE_INT xx = 0; HOST_WIDE_INT xx = 0;
if (GET_CODE (x) == CONST_INT) if (CONST_INT_P (x))
xx = INTVAL (x); xx = INTVAL (x);
else else
output_operand_lossage ("'o' operand is not constant"); output_operand_lossage ("'o' operand is not constant");
...@@ -1820,7 +1820,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code) ...@@ -1820,7 +1820,7 @@ xstormy16_print_operand (FILE *file, rtx x, int code)
HOST_WIDE_INT xx = 1; HOST_WIDE_INT xx = 1;
HOST_WIDE_INT l; HOST_WIDE_INT l;
if (GET_CODE (x) == CONST_INT) if (CONST_INT_P (x))
xx = INTVAL (x); xx = INTVAL (x);
else else
output_operand_lossage ("'B' operand is not constant"); output_operand_lossage ("'B' operand is not constant");
...@@ -1918,13 +1918,9 @@ xstormy16_output_addr_vec (FILE *file, rtx label ATTRIBUTE_UNUSED, rtx table) ...@@ -1918,13 +1918,9 @@ xstormy16_output_addr_vec (FILE *file, rtx label ATTRIBUTE_UNUSED, rtx table)
} }
/* Expander for the `call' patterns. /* Expander for the `call' patterns.
INDEX is the index of the switch statement. RETVAL is the RTL for the return register or NULL for void functions.
LOWER_BOUND is a CONST_INT that is the value of INDEX corresponding DEST is the function to call, expressed as a MEM.
to the first table entry. COUNTER is ignored. */
RANGE is the number of table entries.
TABLE is an ADDR_VEC that is the jump table.
DEFAULT_LABEL is the address to branch to if INDEX is outside the
range LOWER_BOUND to LOWER_BOUND + RANGE - 1. */
void void
xstormy16_expand_call (rtx retval, rtx dest, rtx counter) xstormy16_expand_call (rtx retval, rtx dest, rtx counter)
...@@ -1932,11 +1928,10 @@ xstormy16_expand_call (rtx retval, rtx dest, rtx counter) ...@@ -1932,11 +1928,10 @@ xstormy16_expand_call (rtx retval, rtx dest, rtx counter)
rtx call, temp; rtx call, temp;
enum machine_mode mode; enum machine_mode mode;
gcc_assert (GET_CODE (dest) == MEM); gcc_assert (MEM_P (dest));
dest = XEXP (dest, 0); dest = XEXP (dest, 0);
if (! CONSTANT_P (dest) if (! CONSTANT_P (dest) && ! REG_P (dest))
&& GET_CODE (dest) != REG)
dest = force_reg (Pmode, dest); dest = force_reg (Pmode, dest);
if (retval == NULL) if (retval == NULL)
...@@ -1996,7 +1991,8 @@ xstormy16_expand_arith (enum machine_mode mode, enum rtx_code code, ...@@ -1996,7 +1991,8 @@ xstormy16_expand_arith (enum machine_mode mode, enum rtx_code code,
{ {
case PLUS: case PLUS:
if (firstloop if (firstloop
&& GET_CODE (w_src1) == CONST_INT && INTVAL (w_src1) == 0) && CONST_INT_P (w_src1)
&& INTVAL (w_src1) == 0)
continue; continue;
if (firstloop) if (firstloop)
...@@ -2029,7 +2025,8 @@ xstormy16_expand_arith (enum machine_mode mode, enum rtx_code code, ...@@ -2029,7 +2025,8 @@ xstormy16_expand_arith (enum machine_mode mode, enum rtx_code code,
} }
else if (firstloop else if (firstloop
&& code != COMPARE && code != COMPARE
&& GET_CODE (w_src1) == CONST_INT && INTVAL (w_src1) == 0) && CONST_INT_P (w_src1)
&& INTVAL (w_src1) == 0)
continue; continue;
else if (firstloop) else if (firstloop)
insn = gen_subchi4 (w_dest, w_src0, w_src1); insn = gen_subchi4 (w_dest, w_src0, w_src1);
...@@ -2040,7 +2037,7 @@ xstormy16_expand_arith (enum machine_mode mode, enum rtx_code code, ...@@ -2040,7 +2037,7 @@ xstormy16_expand_arith (enum machine_mode mode, enum rtx_code code,
case IOR: case IOR:
case XOR: case XOR:
case AND: case AND:
if (GET_CODE (w_src1) == CONST_INT if (CONST_INT_P (w_src1)
&& INTVAL (w_src1) == -(code == AND)) && INTVAL (w_src1) == -(code == AND))
continue; continue;
...@@ -2080,8 +2077,10 @@ xstormy16_output_shift (enum machine_mode mode, enum rtx_code code, ...@@ -2080,8 +2077,10 @@ xstormy16_output_shift (enum machine_mode mode, enum rtx_code code,
const char *r0, *r1, *rt; const char *r0, *r1, *rt;
static char r[64]; static char r[64];
gcc_assert (GET_CODE (size_r) == CONST_INT gcc_assert (CONST_INT_P (size_r)
&& GET_CODE (x) == REG && mode == SImode); && REG_P (x)
&& mode == SImode);
size = INTVAL (size_r) & (GET_MODE_BITSIZE (mode) - 1); size = INTVAL (size_r) & (GET_MODE_BITSIZE (mode) - 1);
if (size == 0) if (size == 0)
...@@ -2423,7 +2422,7 @@ combine_bnp (rtx insn) ...@@ -2423,7 +2422,7 @@ combine_bnp (rtx insn)
} }
reg = XEXP (cond, 0); reg = XEXP (cond, 0);
if (GET_CODE (reg) != REG) if (! REG_P (reg))
return; return;
regno = REGNO (reg); regno = REGNO (reg);
if (XEXP (cond, 1) != const0_rtx) if (XEXP (cond, 1) != const0_rtx)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment