aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoern Rennecke <amylaar@spamcop.net>2010-11-12 20:52:33 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2010-11-12 20:52:33 +0000
commit973c37951e0ad993e5891563fd4c3b8edf5b2ef0 (patch)
tree024f2e3395d53c5010e402da14f1d92ee9c34fb7 /gcc
parent046845defcda6dc1cc579be0a2ccf9931df3e6bb (diff)
downloadgcc-973c37951e0ad993e5891563fd4c3b8edf5b2ef0.zip
gcc-973c37951e0ad993e5891563fd4c3b8edf5b2ef0.tar.gz
gcc-973c37951e0ad993e5891563fd4c3b8edf5b2ef0.tar.bz2
re PR target/46435 (cris-elf --enable-werror-always build fails)
PR target/46435 * config/cris/cris.c (saved_regs_mentioned): Delete. (cris_reload_address_legitimized): Cast itype to enum reload_type. Remove unused variable op0p. (cris_rtx_costs): Cast argument 2 to rtx_cost to enum rtx_code. (cris_emit_movem_store): Use add_reg_note. From-SVN: r166673
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/cris/cris.c68
2 files changed, 13 insertions, 62 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0b7f92a..8a1707b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -6,6 +6,13 @@
(xtensa_function_arg_1): De-constify cum.
(xtensa_expand_prologue): Use add_reg_note.
+ PR target/46435
+ * config/cris/cris.c (saved_regs_mentioned): Delete.
+ (cris_reload_address_legitimized): Cast itype to enum reload_type.
+ Remove unused variable op0p.
+ (cris_rtx_costs): Cast argument 2 to rtx_cost to enum rtx_code.
+ (cris_emit_movem_store): Use add_reg_note.
+
2010-11-12 Eric Botcazou <ebotcazou@adacore.com>
* function.c (expand_function_end): Set the locator of the prologue on
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 0681f8d..f3bda22 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -103,8 +103,6 @@ static void cris_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
static int cris_initial_frame_pointer_offset (void);
-static int saved_regs_mentioned (rtx);
-
static void cris_operand_lossage (const char *, rtx);
static int cris_reg_saved_in_regsave_area (unsigned int, bool);
@@ -680,57 +678,6 @@ cris_reg_saved_in_regsave_area (unsigned int regno, bool got_really_used)
|| regno == EH_RETURN_DATA_REGNO (3)));
}
-/* Return nonzero if there are regs mentioned in the insn that are not all
- in the call_used regs. This is part of the decision whether an insn
- can be put in the epilogue. */
-
-static int
-saved_regs_mentioned (rtx x)
-{
- int i;
- const char *fmt;
- RTX_CODE code;
-
- /* Mainly stolen from refers_to_regno_p in rtlanal.c. */
-
- code = GET_CODE (x);
-
- switch (code)
- {
- case REG:
- i = REGNO (x);
- return !call_used_regs[i];
-
- case SUBREG:
- /* If this is a SUBREG of a hard reg, we can see exactly which
- registers are being modified. Otherwise, handle normally. */
- i = REGNO (SUBREG_REG (x));
- return !call_used_regs[i];
-
- default:
- ;
- }
-
- fmt = GET_RTX_FORMAT (code);
- for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
- {
- if (fmt[i] == 'e')
- {
- if (saved_regs_mentioned (XEXP (x, i)))
- return 1;
- }
- else if (fmt[i] == 'E')
- {
- int j;
- for (j = XVECLEN (x, i) - 1; j >=0; j--)
- if (saved_regs_mentioned (XEXP (x, i)))
- return 1;
- }
- }
-
- return 0;
-}
-
/* The PRINT_OPERAND worker. */
static void
@@ -1335,9 +1282,8 @@ cris_reload_address_legitimized (rtx x,
int itype,
int ind_levels ATTRIBUTE_UNUSED)
{
- enum reload_type type = itype;
+ enum reload_type type = (enum reload_type) itype;
rtx op0, op1;
- rtx *op0p;
rtx *op1p;
if (GET_CODE (x) != PLUS)
@@ -1347,7 +1293,6 @@ cris_reload_address_legitimized (rtx x,
return false;
op0 = XEXP (x, 0);
- op0p = &XEXP (x, 0);
op1 = XEXP (x, 1);
op1p = &XEXP (x, 1);
@@ -1946,8 +1891,9 @@ cris_rtx_costs (rtx x, int code, int outer_code, int *total,
&& !CONST_INT_P (XEXP (x, 0))
&& !CRIS_CONST_OK_FOR_LETTER_P (INTVAL (XEXP (x, 1)), 'I'))
{
- *total = (rtx_cost (XEXP (x, 0), outer_code, speed) + 2
- + 2 * GET_MODE_NUNITS (GET_MODE (XEXP (x, 0))));
+ *total
+ = (rtx_cost (XEXP (x, 0), (enum rtx_code) outer_code, speed) + 2
+ + 2 * GET_MODE_NUNITS (GET_MODE (XEXP (x, 0))));
return true;
}
return false;
@@ -1958,7 +1904,7 @@ cris_rtx_costs (rtx x, int code, int outer_code, int *total,
/* fall through */
case ZERO_EXTEND: case SIGN_EXTEND:
- *total = rtx_cost (XEXP (x, 0), outer_code, speed);
+ *total = rtx_cost (XEXP (x, 0), (enum rtx_code) outer_code, speed);
return true;
default:
@@ -3539,9 +3485,7 @@ cris_emit_movem_store (rtx dest, rtx nregs_rtx, int increment,
XVECEXP (seq, 0, i)
= copy_rtx (XVECEXP (PATTERN (insn), 0, i + 1));
XVECEXP (seq, 0, nregs) = copy_rtx (XVECEXP (PATTERN (insn), 0, 1));
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, seq,
- REG_NOTES (insn));
+ add_reg_note (insn, REG_FRAME_RELATED_EXPR, seq);
}
RTX_FRAME_RELATED_P (insn) = 1;