https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114203

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
  (set_nb_iterations_in_loop = b_3(D) != 0 ? (unsigned int) (32 - __builtin_clz
((unsigned int) b_3(D))) : 24))

The issue is for prec <= i_prec we do

     call = build_call_expr (fn, 1, src);
      if (define_at_zero)
        {
          tree is_zero = fold_build2 (NE_EXPR, boolean_type_node, src,
                                      build_zero_cst (TREE_TYPE (src)));
          call = fold_build3 (COND_EXPR, integer_type_node, is_zero, call,
                              build_int_cst (integer_type_node, prec));
        }

      if (leading && prec < i_prec)
        call = fold_build2 (MINUS_EXPR, integer_type_node, call,
                            build_int_cst (integer_type_node, i_prec - prec));

but that's the wrong way around, 'define_at_zero' should happen after the
adjustment for leading.

Reply via email to