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 ...

Reply via email to