Hi,

On Wed, 23 Oct 2019, Michael Matz wrote:

> On Tue, 22 Oct 2019, Rainer Orth wrote:
> 
> > > testsuite/
> > >   * gcc.dg/unroll-and-jam.c: Add three invalid and one valid case.
> > 
> > this testcase now FAILs on 32-bit targets (seen on i386-pc-solaris2.11
> > and sparc-sun-solaris2.11, also reports for i686-pc-linux-gnu and
> > i586-unknown-freebsd11.2):
> > 
> > +FAIL: gcc.dg/unroll-and-jam.c scan-tree-dump-times unrolljam "applying 
> > unroll and jam" 6
> 
> Hrmpf, I'll have a look :-/  Thanks for noticing.

A strange interaction with LIM, which only does something on 32bit, but 
not on 64bit (which is a problem to investigate on its own, but outside of 
scope).  Disabling it requires changing the testcase so that LIM isn't 
necessary for other reasons, as below.  Can you check if that fixes the 
problem on Solaris as well?  (It does for linux 32bit).


Ciao,
Michael.

testsuite/
        PR middle-end/90796
        * gcc.dg/unroll-and-jam.c: Disable loop-invariant motion.

--- a/gcc/testsuite/gcc.dg/unroll-and-jam.c
+++ b/gcc/testsuite/gcc.dg/unroll-and-jam.c
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O3 -floop-unroll-and-jam --param unroll-jam-min-percent=0 
-fdump-tree-unrolljam-details" } */
+/* { dg-options "-O3 -floop-unroll-and-jam -fno-tree-loop-im --param 
unroll-jam-min-percent=0 -fdump-tree-unrolljam-details" } */
 /* { dg-require-effective-target int32plus } */
 
 #include <stdio.h>
@@ -31,10 +31,10 @@ void checkb(void)
   //printf("  %d\n", sum);
 }
 
-unsigned i, j;
 #define TEST(name, body, test) \
 static void __attribute__((noinline,noclone)) name (unsigned long n, unsigned 
long m) \
 { \
+  unsigned i, j; \
   for (i = 1; i < m; i++) { \
       for (j = 1; j < n; j++) { \
          body; \

Reply via email to