From a046136a50df8d31ec75e1dd2b1279d028431d51 Mon Sep 17 00:00:00 2001 From: Alexey Makhalov Date: Tue, 20 Aug 2013 15:14:49 +0000 Subject: dce.c (fini_dce): Call df_analyze again just in case delete_unmarked_insns removed anything. * dce.c (fini_dce): Call df_analyze again just in case delete_unmarked_insns removed anything. From-SVN: r201886 --- gcc/dce.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gcc/dce.c') diff --git a/gcc/dce.c b/gcc/dce.c index fa22316b..c0dd87a 100644 --- a/gcc/dce.c +++ b/gcc/dce.c @@ -745,6 +745,17 @@ fini_dce (bool fast) bitmap_obstack_release (&dce_blocks_bitmap_obstack); bitmap_obstack_release (&dce_tmp_bitmap_obstack); } + + /* If DCE removes the last reference to a hard register, we want + to recompute REGS_EVER_LIVE and the global life information. + + Ideally we'd look at REGS_EVER_LIVE before and after and only + rerun DF analysis if something changed. */ + if (!df_in_progress) + { + df_compute_regs_ever_live (true); + df_analyze (); + } } -- cgit v1.1