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]

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


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