df-problems.c (df_kill_notes): Check that the use refers to the note under examination.
authorPaolo Bonzini <bonzini@gnu.org>
Mon, 30 Jan 2012 12:56:17 +0000 (12:56 +0000)
committerPaolo Bonzini <bonzini@gcc.gnu.org>
Mon, 30 Jan 2012 12:56:17 +0000 (12:56 +0000)
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

gcc/ChangeLog
gcc/df-problems.c

index 3fbd36b14e9b4d256142ed2f49b9822881bfc169..444d1818a88a35cd8a50a894192299f83dec26f6 100644 (file)
@@ -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
index f9b0bc1d8729f757ccc927338ae5b3f4aa0bbce2..c9fc91bd376d867fbb03512a242f15c0bd5a7bd7 100644 (file)
@@ -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;