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