From ff694bf70e0b1ebd336c684713ce6153cc26b3d6 Mon Sep 17 00:00:00 2001 From: Pierre-Marie de Rodat Date: Tue, 22 Sep 2015 16:02:41 +0200 Subject: [PATCH 2/2] DF_LIVE: make clobbers cancel effect of previous GENs in the same BBs gcc/ChangeLog: * df-problems.c (df_live_bb_local_compute): Clear GEN bits for DF_REF_MUST_CLOBBER references. --- gcc/df-problems.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/df-problems.c b/gcc/df-problems.c index c08ae36..56e1cf5 100644 --- a/gcc/df-problems.c +++ b/gcc/df-problems.c @@ -1464,9 +1464,12 @@ df_live_bb_local_compute (unsigned int bb_index) seen are included in the gen set. */ bitmap_set_bit (&bb_info->gen, regno); else if (DF_REF_FLAGS_IS_SET (def, DF_REF_MUST_CLOBBER)) - /* Only must clobbers for the entire reg destroy the - value. */ - bitmap_set_bit (&bb_info->kill, regno); + { + /* Only must clobbers for the entire reg destroy the + value. */ + bitmap_set_bit (&bb_info->kill, regno); + bitmap_clear_bit (&bb_info->gen, regno); + } else if (! DF_REF_FLAGS_IS_SET (def, DF_REF_MAY_CLOBBER)) bitmap_set_bit (&bb_info->gen, regno); } -- 2.6.0