This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/80155] [7 regression] Performance regression with code hoisting enabled


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"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]