From e065105898e9374964c728fdc3065bb9cc807560 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 1 Mar 2008 03:35:50 +0000 Subject: [PATCH] * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly. From-SVN: r132794 --- gcc/ChangeLog | 4 ++++ gcc/rtlanal.c | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e03adcc4af2..794607568dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2008-03-01 Alexandre Oliva + + * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly. + 2008-03-01 Alexandre Oliva * tree-flow-inline.h (next_readonly_imm_use): Return diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index d9e60d3b1ab..804d6c88e5c 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; -- 2.30.2