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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amker at gcc dot gnu.org

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Anyway, it seems the bug is somewhere in ivopts, before ivopts we have:
  # j_18 = PHI <3(3), j_9(8)>
  # ivtmp_14 = PHI <4(3), ivtmp_13(8)>
  _1 = i_17 + j_18;
  _2 = (some_enum) _1;
  sink (_2);
  j_9 = j_18 + -1;
  ivtmp_13 = ivtmp_14 - 1;
where _2 is the only SSA_NAME with some_enum type.
ivopts starts using that type everywhere:
  some_enum ivtmp.19;
  some_enum ivtmp.9;
  int j;
  int i;
  some_enum _2;
  some_enum _23;
  unsigned int _24;
  int _25;

  <bb 2> [local count: 71582789]:

  <bb 3> [local count: 214748369]:
  # ivtmp.19_21 = PHI <4294967295(2), ivtmp.19_22(7)>
  _24 = ivtmp.19_21 + 1;
  _25 = (int) _24;
  i_17 = _25;
  _23 = ivtmp.19_21 + 4;
  ivtmp.9_3 = _23;

  <bb 4> [local count: 858993457]:
  # ivtmp.9_5 = PHI <ivtmp.9_3(3), ivtmp.9_4(8)>
  _2 = ivtmp.9_5;
  sink (_2);
  ivtmp.9_4 = ivtmp.9_5 - 1;
  if (ivtmp.9_4 == ivtmp.19_21)
    goto <bb 5>; [25.00%]
  else
    goto <bb 8>; [75.00%]

  <bb 8> [local count: 644245086]:
  goto <bb 4>; [100.00%]

  <bb 5> [local count: 214748369]:
  ivtmp.19_22 = ivtmp.19_21 + 1;
  if (ivtmp.19_22 == 2)
    goto <bb 6>; [33.33%]
  else
    goto <bb 7>; [66.67%]

Reply via email to