Aurelien Buhrig <aurelien.buhrig.gcc@xxxxxxxxx> writes: > What I mean is I do not have any define_insn that matches a cbranch, but > the cbranch named pattern is expanded during expand pass using a > define_expand into: > (set (reg:CC CC_REGNO) (compare:CC op0 op1)) > (set (pc) (if_then_else (match_operator 1 "xxx" > [(reg:CC CC_REGNO)(const_int 0)]) (label_ref ()) (pc))) > > Then the first insn can be combined with such a sub pattern: > [(set (reg:CC CC_REGNO) (compare:CC op1 op2)) > (set op0 (minus (match_dup 1) (match_dup 2))] > > And my question was about the correctness of the previous pattern > compared with the following when an overflow occurs (and the comparison > operator is lt). > [(set (reg:CC CC_REGNO) (compare:CC (minus (op1 op2)) (const_int 0))) > (set op0 (minus (match_dup 1) (match_dup 2))] > > You helped me (thanks!) come to the conclusion that both are valid, and > that the N xor V test is enough for the two, right? Sounds right. Ian