* rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
authorAlexandre Oliva <aoliva@redhat.com>
Sat, 1 Mar 2008 03:35:50 +0000 (03:35 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Sat, 1 Mar 2008 03:35:50 +0000 (03:35 +0000)
From-SVN: r132794

gcc/ChangeLog
gcc/rtlanal.c

index e03adcc4af289bc20d4f65b138d3564ccba6598c..794607568dc19f70107cc12d9c533680020e15c2 100644 (file)
@@ -1,3 +1,7 @@
+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
index d9e60d3b1ab7c0cd5139fbab3b367963bfd9b18f..804d6c88e5c43e69e7bf92425b67e208019e5728 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;