]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/21528 (Boost shared_ptr_test.cpp fails with -O3)
authorRichard Henderson <rth@redhat.com>
Tue, 7 Jun 2005 23:48:27 +0000 (16:48 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 7 Jun 2005 23:48:27 +0000 (16:48 -0700)
        PR rtl-opt/21528
        * rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.

From-SVN: r100731

gcc/ChangeLog
gcc/rtlanal.c

index d21d38316826a11d715f2987cb6c9420f1246ed9..fa11396326682da74dcba0ce829c04706f2296e5 100644 (file)
@@ -1,3 +1,8 @@
+2005-06-07  Richard Henderson  <rth@redhat.com>
+
+       PR rtl-opt/21528
+       * rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.
+
 2005-06-07  Steven Bosscher  <stevenb@suse.de>
 
        PR tree-optimization/21847
index 94e8d4c8033ae111f1249f7466de1969c069ce50..5fdb4704fd945046076f968e67b36a781b567980 100644 (file)
@@ -1309,8 +1309,18 @@ reg_overlap_mentioned_p (rtx x, rtx in)
 
        fmt = GET_RTX_FORMAT (GET_CODE (in));
        for (i = GET_RTX_LENGTH (GET_CODE (in)) - 1; i >= 0; i--)
-         if (fmt[i] == 'e' && reg_overlap_mentioned_p (x, XEXP (in, i)))
-           return 1;
+         if (fmt[i] == 'e')
+           {
+             if (reg_overlap_mentioned_p (x, XEXP (in, i)))
+               return 1;
+           }
+         else if (fmt[i] == 'E')
+           {
+             int j;
+             for (j = XVECLEN (in, i) - 1; j >= 0; --j)
+               if (reg_overlap_mentioned_p (x, XVECEXP (in, i, j)))
+                 return 1;
+           }
 
        return 0;
       }