aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2012-05-10 19:58:01 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2012-05-10 19:58:01 +0000
commite8d7e3e701e666524c9db3423a93ff84883e4a1e (patch)
tree65f4e1002edcbf2bf9034c2a5c888f58081113dc
parente338c25c4b366dcc55c939bc1c500652aa4577c9 (diff)
downloadgcc-e8d7e3e701e666524c9db3423a93ff84883e4a1e.zip
gcc-e8d7e3e701e666524c9db3423a93ff84883e4a1e.tar.gz
gcc-e8d7e3e701e666524c9db3423a93ff84883e4a1e.tar.bz2
re PR rtl-optimization/53125 (Very slow compilation on SPARC)
2012-05-10 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/53125 * ira.c (ira): Call find_moveable_pseudos or move_unallocated_pseudos if only ira_conflicts_p is true. From-SVN: r187373
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ira.c12
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 06834ad..1809d7c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/53125
+ * ira.c (ira): Call find_moveable_pseudos or
+ move_unallocated_pseudos if only ira_conflicts_p is true.
+
2012-05-10 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (*movoi_internal_avx): Handle
diff --git a/gcc/ira.c b/gcc/ira.c
index 456c5f0..f0d885c 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -4125,7 +4125,12 @@ ira (FILE *f)
}
allocated_reg_info_size = max_reg_num ();
- find_moveable_pseudos ();
+
+ /* It is not worth to do such improvement when we use a simple
+ allocation because of -O0 usage or because the function is too
+ big. */
+ if (ira_conflicts_p)
+ find_moveable_pseudos ();
max_regno_before_ira = max_reg_num ();
ira_setup_eliminable_regset ();
@@ -4234,7 +4239,10 @@ ira (FILE *f)
max_regno * sizeof (struct ira_spilled_reg_stack_slot));
}
allocate_initial_values (reg_equivs);
- move_unallocated_pseudos ();
+
+ /* See comment for find_moveable_pseudos call. */
+ if (ira_conflicts_p)
+ move_unallocated_pseudos ();
}
static void