This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]