From: Alexey Makhalov Date: Tue, 20 Aug 2013 15:14:49 +0000 (+0000) Subject: dce.c (fini_dce): Call df_analyze again just in case delete_unmarked_insns removed... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a046136a50df8d31ec75e1dd2b1279d028431d51;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 208b291a9c6..516d951f80c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-08-20 Alexey Makhalov + + * dce.c (fini_dce): Call df_analyze again just in case + delete_unmarked_insns removed anything. + 2013-08-20 Teresa Johnson PR rtl-optimizations/57451 diff --git a/gcc/dce.c b/gcc/dce.c index fa22316b5cc..c0dd87a2628 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 (); + } }