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

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
_Z3bazj._assume.0 assume inferred range of x_2(D) (param x) = [irange] unsigned
int [9, 10] MASK 0x3 VALUE 0x8
   on-exit update x_2(D) in BB2 : [irange] unsigned int [9, 10] MASK 0x3 VALUE
0x8

The _Z3bazj._assume.0 function body is
  <bb 2> [local count: 1073741822]:
  _3 = x_2(D) + 4294967292;
  if (_3 <= 1)
    goto <bb 4>; [41.00%]
  else
    goto <bb 3>; [59.00%]

  <bb 3> [local count: 633507679]:
  if (x_2(D) == 9)
    goto <bb 4>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 4> [local count: 797785881]:
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 418115066]:
  if (x_2(D) == 10)
    goto <bb 4>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 6> [local count: 1073741824]:
  # iftmp.3_4 = PHI <1(4), 0(5)>
  return iftmp.3_4;
and so for x - 4U <= 1 should return 1 (i.e. [4,5] range), or for [9,9], or for
[10,10].

Reply via email to