This is the mail archive of the gcc-patches@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]

Re: RFA: patch to fix PR39432


On Mon, Apr 27, 2009 at 11:17:19AM -0400, Bradley Lucier wrote:
> Re:
> 
>         Vladimir Makarov wrote:
>         > The following patch fixes PR 39432.  The PR details can be found on
>         >
>         > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39432
>         >
>         > Compiler after the patch generates the same code for -On (n>=2).
>         > It was checked on x86/x86_64 on about 20 benchmarks.
>         >
>         > The patch was successfully bootstrapped on x86_64.
>         >
>         > Ok to commit it to the trunk?
>         >
>         > 2009-03-11  Vladimir Makarov  <vmakarov@redhat.com>
>         >
>         >    PR debug/39432
>         >    * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
>         >    * ira-conflicts.c (ira_build_conflicts): Prohibit call used
>         >    registers for allocnos created from user-defined variables.
>         >
>         approved
>         
>         kenny
>         
> It appears that this patch may have caused the 60% performance
> regression reported here:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39914

The patch is tradeoff between debuggability and performance.
As can be seen in the PR, variables allocated in call-used registers
accross calls can't be inspected.  At -O0 we definitely should be
doing what the patch does, at -O2 we certainly shouldn't, and -O1
very much depends on what the -O1 definition is, whether the difference
between -O1 and -O2 is also in having more debuggable code (note, vars
allocated in call-used registers accross calls are really lost for
debugging, no amount of work on improving debuginfo generation helps),
or not.

	Jakub


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