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/18704] [4.0 Regression] Inlining limits cause 340% performance regression


------- Additional Comments From hubicka at ucw dot cz  2004-12-07 17:50 -------
Subject: Re:  [4.0 Regression] Inlining limits cause 340% performance regression

> 
> ------- Additional Comments From rguenth at tat dot physik dot uni-tuebingen dot de  2004-12-07 15:35 -------
> Subject: Re:  [4.0 Regression] Inlining limits
>  cause 340% performance regression
> 
> On Tue, 7 Dec 2004, Richard Guenther wrote:
> 
> > static inline void foo() {}
> > void bar() { foo(); }
> >
> > which for -O2 -fprofile-generate produces
> >
> > bar:
> >         addl    $1, .LPBX1
> >         pushl   %ebp
> >         movl    %esp, %ebp
> >         adcl    $0, .LPBX1+4
> >         addl    $1, .LPBX1+16
> >         popl    %ebp
> >         adcl    $0, .LPBX1+20
> >         addl    $1, .LPBX1+8
> >         adcl    $0, .LPBX1+12
> >         ret
> 
> Mainline manages to produce
> 
> bar:
>         addl    $1, .LPBX1
>         pushl   %ebp
>         movl    %esp, %ebp
>         adcl    $0, .LPBX1+4
>         popl    %ebp
>         ret
> 
> but that's RTL instrumentation?

It is instrumentation after inlining.  Before inlining you have two
functions so you get two entry points.
Doing little inlinng before profiling would do the trick here, but it
needs some restructuring first.

Honza
> 
> 
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18704
> 
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug, or are watching someone who is.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18704


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