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

Alexander Monakov <amonakov at gcc dot gnu.org> changed:

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

--- Comment #7 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
(you mean unreachable code, not dead code)

Nice find, this is definitely a bug. As you say, loop unswitching introduces an
unconditional use of an uninitialized variable which otherwise is conditional
and (might be) never executed. The testcase hits a problematic early-out in
is_maybe_undefined:

      /* Uses in stmts always executed when the region header executes
         are fine.  */
      if (dominated_by_p (CDI_DOMINATORS, loop->header, gimple_bb (def)))
        continue;

the code does not match the comment, checking postdominators might be correct,
but not dominators.

This was introduced by r245057 for PR71691, so technically a 8/9/10 regression.
Probably worth splitting into a separate PR as this is more serious and might
be more straightforward to fix than the earlier testcases.

Reply via email to