df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
authorEric Botcazou <ebotcazou@libertysurf.fr>
Wed, 20 Jun 2007 20:26:07 +0000 (22:26 +0200)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 20 Jun 2007 20:26:07 +0000 (20:26 +0000)
* df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.

From-SVN: r125894

gcc/ChangeLog
gcc/df-scan.c

index 3d5333904a5ade9416240d627b1a24fe06c3f2da..4e4bdbf48962509f0b5c31a22ad7a863d7fcf35c 100644 (file)
@@ -1,3 +1,7 @@
+2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
+
 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
 
        PR target/32335
index fff621f0261dc2f955be00cdb9297a4c3dc5e1fa..97ce8aad162564c9c85a2f71e8f1ba38d9c34d83 100644 (file)
@@ -3081,9 +3081,16 @@ df_get_call_refs (struct df_collection_rec * collection_rec,
                        DF_REF_REG_USE, bb, insn, flags);
       else if (GET_CODE (XEXP (note, 0)) == CLOBBER)
        {
-         unsigned int regno = REGNO (XEXP (XEXP (note, 0), 0));
-         if (!bitmap_bit_p (defs_generated, regno))
-           df_defs_record (collection_rec, XEXP (note, 0), bb, insn, flags);
+         if (REG_P (XEXP (XEXP (note, 0), 0)))
+           {
+             unsigned int regno = REGNO (XEXP (XEXP (note, 0), 0));
+             if (!bitmap_bit_p (defs_generated, regno))
+               df_defs_record (collection_rec, XEXP (note, 0), bb,
+                               insn, flags);
+           }
+         else
+           df_uses_record (collection_rec, &XEXP (note, 0),
+                           DF_REF_REG_USE, bb, insn, flags);
        }
     }