diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2007-06-20 22:26:07 +0200 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2007-06-20 20:26:07 +0000 |
commit | 7e657ec235f32af78f39a1c710737cc6191b0bde (patch) | |
tree | 6d7e6f88ea1a8c83efdd7629a1107e3fc2d23caa /gcc/df-scan.c | |
parent | 7a9dcd47e849ac0ab853140336119f99578bd428 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc/df-scan.c')
-rw-r--r-- | gcc/df-scan.c | 13 |
1 files changed, 10 insertions, 3 deletions
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); } } |