OSDN Git Service

* rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 1 Mar 2008 03:35:50 +0000 (03:35 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 1 Mar 2008 03:35:50 +0000 (03:35 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132794 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/rtlanal.c

index e03adcc..7946075 100644 (file)
@@ -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.
 
index d9e60d3..804d6c8 100644 (file)
@@ -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;