The following patch fixes

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65647

This very complicated problem occurred in rare cases when chain of reloads involving at least two pseudos and insns were generated and one pseudo was spilled on later sub-passes after spilling sub-pass and this pattern happened to be repeated.

  The patch was bootstrapped and tested on x86/x86-64, ppc64, and aarch64.

  Committed as rev.221867.

2015-04-04  Vladimir Makarov  <vmaka...@redhat.com>

        PR target/65647
        * lra-int.h (LRA_MAX_REMATERIALIZATION_PASSES): New.  Add its
        value checking.
        (lra_rematerialization_iter): New.
        * lra.c (lra): Initialize lra_rematerialization_iter.
        Stop updating lra_constraint_new_regno_start after switching of
        inheritance and rematerialization.
        * lra-remat.c (lra_rematerialization_iter): New.
        (lra_remat): Add printing pass iteration.  Do rematerialization
        only first LRA_MAX_REMATERIALIZATION_PASSES iterations.

2015-04-04  Vladimir Makarov  <vmaka...@redhat.com>

        PR target/65647
        * gcc.target/arm/pr65647.c: New.


Reply via email to