https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93301
--- Comment #11 from rguenther at suse dot de <rguenther at suse dot de> --- On Sun, 26 Jan 2020, amonakov at gcc dot gnu.org wrote: > 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. Yes, as said, there are cases that need to be looked at and the above is definitely a bug.