[Bug tree-optimization/93432] variable is used uninitialized, but gcc shows no warning

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Aug 31 13:44:00 GMT 2022


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c                           |tree-optimization
           Keywords|easyhack                    |

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
It works by chance when optimizing but not optimizing too much.  -O3 unrolls
the loop and runs into CCP aka PR18501, we get

  <bb 2> [local count: 97603129]:
  if (y_5(D) <= 9)
    goto <bb 18>; [33.00%]
  else
    goto <bb 19>; [67.00%]

  <bb 18> [local count: 32209032]:
  _11 = z_6(D) + 1;

  <bb 19> [local count: 97603129]:
  # prephitmp_17 = PHI <2(2), _11(18)>

and CCP says _11 is UNDEFINED and merges it with 2 to 2.  For me even GCC 9.3.1
warns, so does GCC 7.5, both even with -O3.

We do not warn at -O0 but that's by design - we think doing the predicate based
uninit analysis early (on the unoptimized IL) would be too noisy.


More information about the Gcc-bugs mailing list