summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/toplev.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/toplev.c')
-rw-r--r--contrib/gcc/toplev.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/contrib/gcc/toplev.c b/contrib/gcc/toplev.c
index 5abcf7f..adccdc4 100644
--- a/contrib/gcc/toplev.c
+++ b/contrib/gcc/toplev.c
@@ -2816,7 +2816,8 @@ rest_of_compilation (decl)
tem = cse_main (insns, max_reg_num (), 0, rtl_dump_file);
if (tem)
rebuild_jump_labels (insns);
- purge_all_dead_edges (0);
+ if (purge_all_dead_edges (0))
+ delete_unreachable_blocks ();
delete_trivially_dead_insns (insns, max_reg_num ());
@@ -3461,6 +3462,23 @@ rest_of_compilation (decl)
#endif
#ifdef STACK_REGS
+#if defined (HAVE_ATTR_length)
+ /* If flow2 creates new instructions which need splitting
+ and scheduling after reload is not done, they might not be
+ splitten until final which doesn't allow splitting
+ if HAVE_ATTR_length. */
+#ifdef INSN_SCHEDULING
+ if (optimize && !flag_schedule_insns_after_reload)
+#else
+ if (optimize)
+#endif
+ {
+ timevar_push (TV_SHORTEN_BRANCH);
+ split_all_insns (1);
+ timevar_pop (TV_SHORTEN_BRANCH);
+ }
+#endif
+
timevar_push (TV_REG_STACK);
open_dump_file (DFI_stack, decl);
OpenPOWER on IntegriCloud