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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic,
                   |                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-03-15
             Blocks|                            |24639
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

[CHECK]: examining phi: _10 = PHI <0(13), 0(10), ki_8(14), ki_9(15)>
[CHECK]: Found unguarded use: return _10;

  <bb 2> [local count: 116465650]:
  if (r_11(D) == 0B)
    goto <bb 10>; [18.09%]
  else
    goto <bb 8>; [81.91%]

  <bb 10> [local count: 21068636]:
  goto <bb 7>; [100.00%]

  <bb 8> [local count: 95397014]:
  goto <bb 6>; [100.00%]

...

  <bb 6> [local count: 1073741824]:
  # index_6 = PHI <index_12(D)(8), index_5(9)>
  # n_7 = PHI <r_11(D)(8), _4(9)>
  # ki_9 = PHI <ki_13(D)(8), ki_8(9)>
  if (n_7 != 0B)
    goto <bb 3>; [96.34%]
  else
    goto <bb 15>; [3.66%]

  <bb 15> [local count: 39298952]:

  <bb 7> [local count: 116465651]:
  # _10 = PHI <0(13), 0(10), ki_8(14), ki_9(15)>
  return _10;

so the issue is we fail to jump-thread the condition in BB 6 (fail to
eliminate the loop header test).  This is because with -Og we do not
perform any jump threading.

We might want to change this but at -Og we definitely do not want to
duplicate blocks.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
[Bug 24639] [meta-bug] bug to track all Wuninitialized issues

Reply via email to