https://gcc.gnu.org/bugzilla/show_bug.cgi?id=10520
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Hmm, shouldn't we convert: _24 = MAX_EXPR <n_in_31, n_out_32>; if (_24 < _tmp0_27(D)) goto <bb 4>; [94.50%] else goto <bb 5>; [5.50%] <bb 4> [local count: 906139990]: _25 = MAX_EXPR <n_in1_33, n_out1_34>; if (_25 < _tmp0_27(D)) goto <bb 3>; [94.50%] else goto <bb 5>; [5.50%] Which is: if (MAX_EXPR <n_in_31, n_out_32> < _tmp0_27 && MAX_EXPR <n_in1_33, n_out1_34> < _tmp0_27) goto 3 else goto 5 Into: if (MAX_EXPR<MAX_EXPR <n_in_31, n_out_32>, MAX_EXPR <n_in1_33, n_out1_34> > < _tmp0_27) goto 3 else goto 5 Also? To simplify things a little more?