From: aoliva Date: Sat, 1 Mar 2008 03:35:50 +0000 (+0000) Subject: * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=c8707f088b4d233f1d672a367bba72ef28785f7f * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132794 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e03adcc4af2..794607568dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 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 NULL_USE_OPERAND_P after the end. 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;