diff options
author | Bernd Schmidt <bernds@redhat.com> | 2016-01-19 13:02:17 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2016-01-19 13:02:17 +0000 |
commit | d20c47fc8613b26cd7d2c28996474bf910d865c5 (patch) | |
tree | bc66ac8bb00e285b27407568dcf8fa8a4e0d4f46 /gcc/ira.c | |
parent | e47294194f2f60fb7934c8203c4b5d59552919fb (diff) | |
download | gcc-d20c47fc8613b26cd7d2c28996474bf910d865c5.tar.gz |
* ira.c (ira): Update regstat data if we deleted insns.
From-SVN: r232556
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ira.c b/gcc/ira.c index 7ac6a542ad2..52596175c06 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -5185,19 +5185,27 @@ ira (FILE *f) setup_reg_equiv (); setup_reg_equiv_init (); + bool update_regstat = false; + if (optimize && rebuild_p) { timevar_push (TV_JUMP); rebuild_jump_labels (get_insns ()); if (purge_all_dead_edges ()) - delete_unreachable_blocks (); + { + delete_unreachable_blocks (); + update_regstat = true; + } timevar_pop (TV_JUMP); } allocated_reg_info_size = max_reg_num (); if (delete_trivially_dead_insns (get_insns (), max_reg_num ())) - df_analyze (); + { + df_analyze (); + update_regstat = true; + } /* It is not worth to do such improvement when we use a simple allocation because of -O0 usage or because the function is too @@ -5308,7 +5316,7 @@ ira (FILE *f) check_allocation (); #endif - if (max_regno != max_regno_before_ira) + if (update_regstat || max_regno != max_regno_before_ira) { regstat_free_n_sets_and_refs (); regstat_free_ri (); |