https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81661
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #5) > One possibility is instead of using > > may_be_zero ? 0 : niter > > as niter for code-generation use > > (may_be_zero ? 0 : 1) * niter > > This avoids the gimplification issue. We assemble this as > > call __addvsi3 > movl %eax, %esi > subl %ebp, %esi > cmpl %ebp, %eax > setge %al > movzbl %al, %eax > imull %eax, %esi > > so it definitely is ugly (we're lacking any pattern matching on this > turning it back to a COND_EXPR). r250377 added a pattern which should have caught that ...