diff options
author | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2013-04-19 03:57:22 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2013-04-19 03:57:22 +0000 |
commit | 72ea0d4721166aa3c2c3abf7a7a5bbd2248e14c8 (patch) | |
tree | 5b0327b9fb3d3fdd57343fdfd1bcc9b35af18699 /gcc/lra.c | |
parent | ebad3a4f1bb5222eedd29994c5060aeb180a55cb (diff) | |
download | gcc-72ea0d4721166aa3c2c3abf7a7a5bbd2248e14c8.tar.gz |
[multiple changes]
2013-04-18 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/56992
* lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
related code.
(lra_coalesce): Remove split_origin_bitmap and related code.
* lra.c (lra): Coalesce after undoing inheritance. Recreate live
ranges if necessary.
2013-04-18 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/56992
* g++.dg/opt/pr56999.C: New test.
From-SVN: r198082
Diffstat (limited to 'gcc/lra.c')
-rw-r--r-- | gcc/lra.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/lra.c b/gcc/lra.c index e7fa888df57..3ea4a6507d2 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -2295,11 +2295,20 @@ lra (FILE *f) lra_assign (); else { - /* Do coalescing only for regular algorithms. */ - if (! lra_assign () && lra_coalesce ()) - live_p = false; + bool spill_p = !lra_assign (); + if (lra_undo_inheritance ()) live_p = false; + if (spill_p) + { + if (! live_p) + { + lra_create_live_ranges (true); + live_p = true; + } + if (lra_coalesce ()) + live_p = false; + } if (! live_p) lra_clear_live_ranges (); } |