This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: tweek setcc peephole
> (set (match_operand 3 "q_regs_operand" "")
> (zero_extend (match_dup 1)))]
> ! "(peep2_reg_dead_p (3, operands[1])
> ! || operands_match_p (operands[1], operands[3]))
> && ! reg_overlap_mentioned_p (operands[3], operands[0])"
> ! [(set (match_dup 4) (match_dup 0))
> (set (strict_low_part (match_dup 5))
> (match_dup 2))]
> ! {
> ! operands[4] = gen_rtx_REG (GET_MODE (operands[0]), 17);
> ! operands[5] = gen_rtx_REG (QImode, REGNO (operands[3]));
> ! if (HAVE_movsi_xor)
> ! emit_insn (gen_movsi_xor (operands[3], const0_rtx));
> ! else
> ! emit_insn (gen_movsi (operands[3], const0_rtx));
> ! })
Hi,
this produces crash whenever operand3 happends to not be SImode nor DImode
(on 64bit compilation).
I am not quite sure how to fix this nicely. Perhaps adding function
emit_load_of_zero? Or teaching the complexity the emit_move_insn
to do the trick post-reload?
Honza