aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2007-06-20 22:26:07 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-06-20 20:26:07 +0000
commit7e657ec235f32af78f39a1c710737cc6191b0bde (patch)
tree6d7e6f88ea1a8c83efdd7629a1107e3fc2d23caa
parent7a9dcd47e849ac0ab853140336119f99578bd428 (diff)
downloadgcc-7e657ec235f32af78f39a1c710737cc6191b0bde.zip
gcc-7e657ec235f32af78f39a1c710737cc6191b0bde.tar.gz
gcc-7e657ec235f32af78f39a1c710737cc6191b0bde.tar.bz2
df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
* df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs. From-SVN: r125894
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/df-scan.c13
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3d53339..4e4bdbf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index fff621f..97ce8aa 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -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);
}
}