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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aldyh at gcc dot gnu.org,
                   |                            |amacleod at redhat dot com,
                   |                            |jakub at gcc dot gnu.org

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems format_integer uses the ranger even at -O0, and asks the ranger there
(talking about #c5 at -O0 -Wall) for value of loop.0_1
1398          value_range vr;
1399          ptr_qry.rvals->range_of_expr (vr, arg, dir.info->callstmt);
in
  <bb 2> :
  loop_4 = 1;

  <bb 3> :
  # loop_2 = PHI <loop_4(2), loop_6(5)>
  loop.0_1 = loop_2;
  loop_6 = loop.0_1 + 1;
  __builtin_snprintf (&buf, 11, "%d", loop.0_1);
  if (loop_6 <= 9)
    goto <bb 5>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 5> :
  goto <bb 3>; [100.00%]
and ranger says [irange] int [-2147483647, 9]
Haven't checked if it just for -O0 doesn't look outside of the loop or what,
not looking outside of the loop would give [-2147483648, 9] IMHO though.
Anyway, in g it is asked about old_5 in:
  <bb 2> :
  loop_3 = 1;

  <bb 3> :
  # loop_1 = PHI <loop_3(2), loop_6(5)>
  old_5 = loop_1;
  loop_6 = loop_1 + 1;
  __builtin_snprintf (&buf, 11, "%d", old_5);
  if (loop_6 <= 9)
    goto <bb 5>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 5> :
  goto <bb 3>; [100.00%]
and returns [irange] int [1, 9] in that case.

Reply via email to