diff options
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)) { |