https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93301
--- Comment #19 from rguenther at suse dot de <rguenther at suse dot de> --- On Sat, 17 Jan 2026, pinskia at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93301 > > --- Comment #18 from Andrew Pinski <pinskia at gcc dot gnu.org> --- > So dom changes: > ``` > if (x.0_1 == y_16(D)) > goto <bb 4>; [34.00%] > else > goto <bb 3>; [66.00%] > > <bb 3> [local count: 708669600]: > > <bb 4> [local count: 1073741824]: > # z_7 = PHI <x.0_1(2), y_16(D)(3)> > # cstore_6 = PHI <1(2), 0(3)> > ``` > > into: > ``` > if (x.0_1 == y_16(D)) > goto <bb 4>; [34.00%] > else > goto <bb 3>; [66.00%] > > <bb 3> [local count: 708669600]: > > <bb 4> [local count: 1073741824]: > # z_7 = PHI <y_16(D)(2), y_16(D)(3)> > # cstore_6 = PHI <1(2), 0(3)> > ``` > > I think dom should not have recorded x.0_1 as being a copy of y_16(D) on the > edge `2->4` like it did since ssa_name_maybe_undef_p is set on it. > > > Then vrp2 does the same: > Registering value_relation (x.0_1 == y_16(D)) on (2->3) > ... > > Global Exported: _17 = [irange] unsigned char [5, 5] > Folding PHI node: _17 = PHI <z_7(5), 5(6)> > Queued PHI for removal. Folds to: 5 I agree. Eventually up to using mark_ssa_maybe_undefs for this ...
