https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110891

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #3)
> One thing I noticed (I don't know if causes the missed optimization) is that
> we have before PRE:
> ```
>   <bb 4> [local count: 1073531371]:
>   if (a.0_1 != 0)
>     goto <bb 6>; [50.00%]
>   else
>     goto <bb 5>; [50.00%]
> 
>   <bb 5> [local count: 536765686]:
>   if (_28 == &d)
>     goto <bb 9>; [30.00%]
>   else
>     goto <bb 7>; [70.00%]
> 
>   <bb 6> [local count: 536765685]:
>   if (_28 == &d)
>     goto <bb 9>; [30.00%]
>   else
>     goto <bb 7>; [70.00%]
> ```
> Which obvious should just be `if (_28 == &d) goto bb9; else goto bb7;` and
> not check `a.0_1` at all.

I wonder if ifcombine could optimize that instead of requiring PRE. I think
that might even fix the issue too.

Reply via email to