aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2012-01-30 12:56:17 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2012-01-30 12:56:17 +0000
commit8203ac49833d3e27ee2af03bc1d10cb66ae54745 (patch)
tree0811a733524bd4a5cbf3d5ab727b8451e3229e9d
parent825b2e07a57f1ccce1f219f4792a3c6b41287aa5 (diff)
downloadgcc-8203ac49833d3e27ee2af03bc1d10cb66ae54745.zip
gcc-8203ac49833d3e27ee2af03bc1d10cb66ae54745.tar.gz
gcc-8203ac49833d3e27ee2af03bc1d10cb66ae54745.tar.bz2
df-problems.c (df_kill_notes): Check that the use refers to the note under examination.
2012-01-30 Paolo Bonzini <bonzini@gnu.org> * df-problems.c (df_kill_notes): Check that the use refers to the note under examination. From-SVN: r183719
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/df-problems.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3fbd36b..444d181 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-30 Paolo Bonzini <bonzini@gnu.org>
+
+ * df-problems.c (df_kill_notes): Check that the use refers
+ to the note under examination.
+
2012-01-30 Eric Botcazou <ebotcazou@adacore.com>
PR target/51920
diff --git a/gcc/df-problems.c b/gcc/df-problems.c
index f9b0bc1..c9fc91b 100644
--- a/gcc/df-problems.c
+++ b/gcc/df-problems.c
@@ -1,6 +1,6 @@
/* Standard problems for dataflow support routines.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Originally contributed by Michael P. Hayes
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
@@ -2814,8 +2814,10 @@ df_kill_notes (rtx insn, bitmap live)
{
df_ref use = *use_rec;
if (DF_REF_REGNO (use) > FIRST_PSEUDO_REGISTER
+ && DF_REF_LOC (use)
&& (DF_REF_FLAGS (use) & DF_REF_IN_NOTE)
- && ! bitmap_bit_p (live, DF_REF_REGNO (use)))
+ && ! bitmap_bit_p (live, DF_REF_REGNO (use))
+ && loc_mentioned_in_p (DF_REF_LOC (use), XEXP (link, 0)))
{
deleted = true;
break;