diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2012-05-10 19:58:01 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2012-05-10 19:58:01 +0000 |
commit | e8d7e3e701e666524c9db3423a93ff84883e4a1e (patch) | |
tree | 65f4e1002edcbf2bf9034c2a5c888f58081113dc /gcc/ira.c | |
parent | e338c25c4b366dcc55c939bc1c500652aa4577c9 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -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 |