Il 12/03/2012 09:52, Uros Bizjak ha scritto:
> +(define_peephole2
> +  [(parallel [(set (reg FLAGS_REG) (match_operand 0 "" ""))
> +           (match_operand 4 "" "")])
> +   (set (match_operand:QI 1 "register_operand" "")
> +     (match_operator:QI 2 "ix86_comparison_operator"
> +       [(reg FLAGS_REG) (const_int 0)]))
> +   (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])"

I understand that you're assuming the shape of operands[4] to be the
same as operands[3], but would it be preferrable to add another overlap
check on operands[4]?

For example the transformation is invalid if you had an overlap between
operands[3] and the destination of operands[4].

Paolo

Reply via email to