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

Reply via email to