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