diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-09-05 14:13:28 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-09-05 14:13:28 +0000 |
commit | 86bf2d46b6350e9af1d3a2e6ee75c1080d26b1c5 (patch) | |
tree | 7b7352545d44596f0dda741d3a58b1f06d4f608c /gcc/resource.c | |
parent | 7fa55ff675da902516b0e0624e8436b823122963 (diff) | |
download | gcc-86bf2d46b6350e9af1d3a2e6ee75c1080d26b1c5.zip gcc-86bf2d46b6350e9af1d3a2e6ee75c1080d26b1c5.tar.gz gcc-86bf2d46b6350e9af1d3a2e6ee75c1080d26b1c5.tar.bz2 |
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.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/resource.c b/gcc/resource.c index 5528831..ff9b878 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, ®s, regs_invalidated_by_call); + get_call_reg_set_usage (call_insn, ®s, 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)) { |