aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2008-03-01 03:35:50 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2008-03-01 03:35:50 +0000
commite065105898e9374964c728fdc3065bb9cc807560 (patch)
tree5d377970535eb0fb877c8fd9611b5f4a39cade28 /gcc
parentd2b6be726e9fa1437b37f4ca9cd6c242ab295d40 (diff)
downloadgcc-e065105898e9374964c728fdc3065bb9cc807560.zip
gcc-e065105898e9374964c728fdc3065bb9cc807560.tar.gz
gcc-e065105898e9374964c728fdc3065bb9cc807560.tar.bz2
* rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
From-SVN: r132794
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/rtlanal.c7
2 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e03adcc..7946075 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2008-03-01 Alexandre Oliva <aoliva@redhat.com>
+ * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
+
+2008-03-01 Alexandre Oliva <aoliva@redhat.com>
+
* tree-flow-inline.h (next_readonly_imm_use): Return
NULL_USE_OPERAND_P after the end.
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index d9e60d3..804d6c8 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -2989,16 +2989,15 @@ loc_mentioned_in_p (rtx *loc, const_rtx in)
fmt = GET_RTX_FORMAT (code);
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
- if (loc == &in->u.fld[i].rt_rtx)
- return 1;
if (fmt[i] == 'e')
{
- if (loc_mentioned_in_p (loc, XEXP (in, i)))
+ if (loc == &XEXP (in, i) || loc_mentioned_in_p (loc, XEXP (in, i)))
return 1;
}
else if (fmt[i] == 'E')
for (j = XVECLEN (in, i) - 1; j >= 0; j--)
- if (loc_mentioned_in_p (loc, XVECEXP (in, i, j)))
+ if (loc == &XVECEXP (in, i, j)
+ || loc_mentioned_in_p (loc, XVECEXP (in, i, j)))
return 1;
}
return 0;