This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
patch to fix PR55330
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 16 Nov 2012 11:36:34 -0500
- Subject: patch to fix PR55330
The following patch fixes
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55330
The problem was in a complex interaction of inheritance and
constraint passes. The test would be compiled successfully if we
increased the number constraint passes. But for such pass interaction,
it hard to know how many passes we need (it can be depended on register
pressure). So my solution for the problem is to put a limit on number
of inheritance passes. I did some experiments. The most important is
the first inheritance pass. The 3rd inheritance pass has practically no
affect on code generation on most tests, e.g. SPEC2000 code on x86-64 is
not changed when we add the 3rd pass. The limit might be defined as a
compiler parameter but after some thoughts I've decided not to do this
as it is not easy to describe constraints on the value and changing the
value I use has no practical sense.
The patch was successfully bootstrapped on x86/x86-64.
Committed as rev. 193567.
2012-11-16 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/55330
* lra-constraints.c (MAX_INHERITANCE_PASSES): New macro.
(lra_inheritance, lra_undo_inheritance): Use it to limit number of
the passes.
2012-11-16 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/55330
* gfortran.dg/pr55330.f90: New test.
Attachment:
pr55330.patch
Description: Text document