summaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2014-09-05 14:13:28 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2014-09-05 14:13:28 +0000
commit86bf2d46b6350e9af1d3a2e6ee75c1080d26b1c5 (patch)
tree7b7352545d44596f0dda741d3a58b1f06d4f608c /gcc/resource.c
parent7fa55ff675da902516b0e0624e8436b823122963 (diff)
Eliminate the checked cast from get_call_reg_set_usage
gcc/ChangeLog 2014-09-05 David Malcolm <dmalcolm@redhat.com> * caller-save.c (setup_save_areas): Strengthen local "insn" from rtx to rtx_insn *. * final.c (get_call_reg_set_usage): Likewise for first param, eliminating a checked cast. * regs.h (get_call_reg_set_usage): Likewise for first param. * resource.c (mark_set_resources): Introduce local rtx_call_insn * "call_insn" for the case of a MARK_SRC_DEST_CALL via a checked cast, replacing references to "x" with "call_insn" where appropriate. (mark_target_live_regs): Strengthen local "real_insn" from rtx to rtx_insn *, adding a checked cast. From-SVN: r214962
Diffstat (limited to 'gcc/resource.c')
-rw-r--r--gcc/resource.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/resource.c b/gcc/resource.c
index 55288317fbc..ff9b87890de 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -659,15 +659,16 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
if (mark_type == MARK_SRC_DEST_CALL)
{
+ rtx_call_insn *call_insn = as_a <rtx_call_insn *> (x);
rtx link;
HARD_REG_SET regs;
res->cc = res->memory = 1;
- get_call_reg_set_usage (x, &regs, regs_invalidated_by_call);
+ get_call_reg_set_usage (call_insn, &regs, regs_invalidated_by_call);
IOR_HARD_REG_SET (res->regs, regs);
- for (link = CALL_INSN_FUNCTION_USAGE (x);
+ for (link = CALL_INSN_FUNCTION_USAGE (call_insn);
link; link = XEXP (link, 1))
if (GET_CODE (XEXP (link, 0)) == CLOBBER)
mark_set_resources (SET_DEST (XEXP (link, 0)), res, 1,
@@ -675,7 +676,7 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
/* Check for a REG_SETJMP. If it exists, then we must
assume that this call can clobber any register. */
- if (find_reg_note (x, REG_SETJMP, NULL))
+ if (find_reg_note (call_insn, REG_SETJMP, NULL))
SET_HARD_REG_SET (res->regs);
}
@@ -995,7 +996,7 @@ mark_target_live_regs (rtx_insn *insns, rtx target_maybe_return, struct resource
insn = next_insn_no_annul (insn))
{
rtx link;
- rtx real_insn = insn;
+ rtx_insn *real_insn = insn;
enum rtx_code code = GET_CODE (insn);
if (DEBUG_INSN_P (insn))
@@ -1013,7 +1014,7 @@ mark_target_live_regs (rtx_insn *insns, rtx target_maybe_return, struct resource
if (code == INSN
&& GET_CODE (PATTERN (insn)) == USE
&& INSN_P (XEXP (PATTERN (insn), 0)))
- real_insn = XEXP (PATTERN (insn), 0);
+ real_insn = as_a <rtx_insn *> (XEXP (PATTERN (insn), 0));
if (CALL_P (real_insn))
{