summaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index ef30528bd9e..b4b9b9d5bc2 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -2725,22 +2725,6 @@ split_all_insns (upd_life)
int changed;
int i;
- if (!upd_life)
- {
- rtx next, insn;
-
- for (insn = get_insns (); insn ; insn = next)
- {
- rtx last;
-
- /* Can't use `next_real_insn' because that might go across
- CODE_LABELS and short-out basic blocks. */
- next = NEXT_INSN (insn);
- last = split_insn (insn);
- }
- return;
- }
-
blocks = sbitmap_alloc (n_basic_blocks);
sbitmap_zero (blocks);
changed = 0;
@@ -2775,12 +2759,21 @@ split_all_insns (upd_life)
abort ();
}
- if (changed && upd_life)
+ if (changed)
{
compute_bb_for_insn (get_max_uid ());
+ for (i = 0; i < n_basic_blocks; i++)
+ find_sub_basic_blocks (BASIC_BLOCK (i));
+ }
+
+ if (changed && upd_life)
+ {
count_or_remove_death_notes (blocks, 1);
update_life_info (blocks, UPDATE_LIFE_LOCAL, PROP_DEATH_NOTES);
}
+#ifdef ENABLE_CHECKING
+ verify_flow_info ();
+#endif
sbitmap_free (blocks);
}