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

From-SVN: r100730

gcc/ChangeLog
gcc/rtlanal.c

index fbd36e16f08cc9286c6b692bc1023c7acc92516e..b504b101acbb84165201214ce500a1c7a0f721e6 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  Dale Johannesen  <dalej@apple.com>
 
        * tree-nested.c (finalize_nesting_tree_1):  Disable
index 0bdcbbadbcf8344fc40d06551eb24a0dc96b435c..2561e32f661d5d6c639f4d4a059bea8871a9f847 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;
       }