This is the mail archive of the
mailing list for the GCC project.
Re: RFA: patch to fix PR39432
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Bradley Lucier <lucier at math dot purdue dot edu>
- Cc: Vladimir Makarov <vmakarov at redhat dot com>, Kenneth Zadeck <zadeck at naturalbridge dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 27 Apr 2009 17:23:02 +0200
- Subject: Re: RFA: patch to fix PR39432
- References: <firstname.lastname@example.org>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Mon, Apr 27, 2009 at 11:17:19AM -0400, Bradley Lucier wrote:
> 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 <email@example.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.
> It appears that this patch may have caused the 60% performance
> regression reported here:
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),