diff options
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index 5fa9eecb55f..26dbe8764f2 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1416,7 +1416,7 @@ expand_binop_directly (machine_mode mode, optab binoptab, machine_mode mode0, mode1, tmp_mode; struct expand_operand ops[3]; bool commutative_p; - rtx pat; + rtx_insn *pat; rtx xop0 = op0, xop1 = op1; /* If it is a commutative operator and the modes would match @@ -1490,8 +1490,8 @@ expand_binop_directly (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 (as_a <rtx_insn *> (pat)) != NULL_RTX - && ! add_equal_note (as_a <rtx_insn *> (pat), ops[0].value, + if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX + && ! add_equal_note (pat, ops[0].value, optab_to_code (binoptab), ops[1].value, ops[2].value)) { @@ -3003,15 +3003,15 @@ expand_unop_direct (machine_mode mode, optab unoptab, rtx op0, rtx target, struct expand_operand ops[2]; enum insn_code icode = optab_handler (unoptab, mode); rtx_insn *last = get_last_insn (); - rtx pat; + rtx_insn *pat; create_output_operand (&ops[0], target, mode); create_convert_operand_from (&ops[1], op0, mode, unsignedp); pat = maybe_gen_insn (icode, 2, ops); if (pat) { - if (INSN_P (pat) && NEXT_INSN (as_a <rtx_insn *> (pat)) != NULL_RTX - && ! add_equal_note (as_a <rtx_insn *> (pat), ops[0].value, + if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX + && ! add_equal_note (pat, ops[0].value, optab_to_code (unoptab), ops[1].value, NULL_RTX)) { @@ -3495,7 +3495,7 @@ expand_abs (machine_mode mode, rtx op0, rtx target, NO_DEFER_POP; do_compare_rtx_and_jump (target, CONST0_RTX (mode), GE, 0, mode, - NULL_RTX, NULL_RTX, op1, -1); + NULL_RTX, NULL, op1, -1); op0 = expand_unop (mode, result_unsignedp ? neg_optab : negv_optab, target, target, 0); @@ -3804,7 +3804,7 @@ maybe_emit_unop_insn (enum insn_code icode, rtx target, rtx op0, enum rtx_code code) { struct expand_operand ops[2]; - rtx pat; + rtx_insn *pat; create_output_operand (&ops[0], target, GET_MODE (target)); create_input_operand (&ops[1], op0, GET_MODE (op0)); @@ -3812,10 +3812,9 @@ maybe_emit_unop_insn (enum insn_code icode, rtx target, rtx op0, if (!pat) return false; - if (INSN_P (pat) && NEXT_INSN (as_a <rtx_insn *> (pat)) != NULL_RTX + if (INSN_P (pat) && NEXT_INSN (pat) != NULL_RTX && code != UNKNOWN) - add_equal_note (as_a <rtx_insn *> (pat), ops[0].value, code, ops[1].value, - NULL_RTX); + add_equal_note (pat, ops[0].value, code, ops[1].value, NULL_RTX); emit_insn (pat); @@ -8360,13 +8359,13 @@ maybe_legitimize_operands (enum insn_code icode, unsigned int opno, and emit any necessary set-up code. Return null and emit no code on failure. */ -rtx +rtx_insn * maybe_gen_insn (enum insn_code icode, unsigned int nops, struct expand_operand *ops) { gcc_assert (nops == (unsigned int) insn_data[(int) icode].n_generator_args); if (!maybe_legitimize_operands (icode, 0, nops, ops)) - return NULL_RTX; + return NULL; switch (nops) { |