[Bug tree-optimization/110891] [14 Regression] Dead Code Elimination Regression since r14-2674-gd0de3bf9175
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Mon Aug 28 06:53:45 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110891
--- Comment #7 from rguenther at suse dot de <rguenther at suse dot de> ---
On Sat, 26 Aug 2023, pinskia at gcc dot gnu.org wrote:
> 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.
Note it's the tail-merging code that optimizes this, not PRE (yeah,
those passes should be ripped apart)
More information about the Gcc-bugs
mailing list