diff options
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index ef8941b..ddc20d7 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -177,9 +177,10 @@ optab_libfunc (optab optab, enum machine_mode mode) try again, ensuring that TARGET is not one of the operands. */ static int -add_equal_note (rtx insns, rtx target, enum rtx_code code, rtx op0, rtx op1) +add_equal_note (rtx_insn *insns, rtx target, enum rtx_code code, rtx op0, rtx op1) { - rtx last_insn, set; + rtx_insn *last_insn; + rtx set; rtx note; gcc_assert (insns && INSN_P (insns) && NEXT_INSN (insns)); @@ -1505,8 +1506,9 @@ expand_binop_directly (enum machine_mode mode, optab binoptab, /* If PAT is composed of more than one insn, try to add an appropriate REG_EQUAL note to it. If we can't because TEMP conflicts with an operand, call expand_binop again, this time without a target. */ - if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX - && ! add_equal_note (pat, ops[0].value, optab_to_code (binoptab), + if (INSN_P (pat) && NEXT_INSN (as_a <rtx_insn *> (pat)) != NULL_RTX + && ! add_equal_note (as_a <rtx_insn *> (pat), ops[0].value, + optab_to_code (binoptab), ops[1].value, ops[2].value)) { delete_insns_since (last); @@ -3028,8 +3030,9 @@ expand_unop_direct (enum machine_mode mode, optab unoptab, rtx op0, rtx target, pat = maybe_gen_insn (icode, 2, ops); if (pat) { - if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX - && ! add_equal_note (pat, ops[0].value, optab_to_code (unoptab), + if (INSN_P (pat) && NEXT_INSN (as_a <rtx_insn *> (pat)) != NULL_RTX + && ! add_equal_note (as_a <rtx_insn *> (pat), ops[0].value, + optab_to_code (unoptab), ops[1].value, NULL_RTX)) { delete_insns_since (last); @@ -3829,8 +3832,10 @@ maybe_emit_unop_insn (enum insn_code icode, rtx target, rtx op0, if (!pat) return false; - if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX && code != UNKNOWN) - add_equal_note (pat, ops[0].value, code, ops[1].value, NULL_RTX); + if (INSN_P (pat) && NEXT_INSN (as_a <rtx_insn *> (pat)) != NULL_RTX + && code != UNKNOWN) + add_equal_note (as_a <rtx_insn *> (pat), ops[0].value, code, ops[1].value, + NULL_RTX); emit_insn (pat); |