This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/80155] [7 regression] Performance regression with code hoisting enabled
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 07 Apr 2017 12:57:39 +0000
- Subject: [Bug tree-optimization/80155] [7 regression] Performance regression with code hoisting enabled
- Auto-submitted: auto-generated
- References: <bug-80155-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80155
--- Comment #25 from rguenther at suse dot de <rguenther at suse dot de> ---
On Fri, 7 Apr 2017, thopre01 at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80155
>
> --- Comment #24 from Thomas Preud'homme <thopre01 at gcc dot gnu.org> ---
> (In reply to rguenther@suse.de from comment #23)
> > On Fri, 7 Apr 2017, thopre01 at gcc dot gnu.org wrote:
> >
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80155
> > >
> > > --- Comment #22 from Thomas Preud'homme <thopre01 at gcc dot gnu.org> ---
> > > (In reply to Thomas Preud'homme from comment #21)
> > > >
> > > > I can see this behavior for Cortex-M0+ indeed but the results are different
> > > > for Cortex-M7 for me:
> > > >
> > > > <with code hoisting>
> > > > % arm-none-linux-gnueabi-gcc -S ~/cortex-m0plus_reproducer.c -O2
> > > > -mcpu=cortex-m7 -mthumb -fdump-tree-pre-details -fdump-tree-crited
> > > > -fdump-tree-all -funroll-all-loops
> > > >
> > > > % grep push cortex-m0plus_reproducer.s
> > > > push {r4, r5}
> > > >
> > > >
> > > > <without code hoisting>
> > > > % arm-none-linux-gnueabi-gcc -S ~/cortex-m0plus_reproducer.c -O2
> > > > -mcpu=cortex-m7 -mthumb -fdump-tree-pre-details -fdump-tree-crited
> > > > -fdump-tree-all -funroll-all-loops -fno-code-hoisting
> > > >
> > > > % grep push cortex-m0plus_reproducer.s
> > > > push {r4}
> > > >
> > > > Would you mind checking again?
> > >
> > > btw, this toolchain was built on 2017-04-04 in case that's the issue.
> >
> > Ok, I can reproduce it now. With the proposed patch to fix the other
> > case it regresses with -fno-code-hoisting though (comment #9 plus fix).
> >
> > Note that code-hosting is simply doing it's job here, hoisting common
> > code out of a switch.
>
> I understand that. Code is smaller so it's definitely worthwhile at -Os. But it
> sometimes lead to worse performance due to more spilling.
But there's no good way to estimate that. We have tons of transforms
that have the issue of being "sometimes worse"