Hi, > The attached patch fixes PR50322. > > The test-case is supposed to succeed if the loop counter data-type has the > same > size as a pointer. The patch defines TYPE to be an int datatype of the same > size > as a pointer, and uses it. After this fix, there's no need for the avr xfails > anymore. > > tested with avr, x86_64 and x86_64 -m32.
what about using uintptr_t? Zdenek > Index: gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c > =================================================================== > --- gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c (revision 178804) > +++ gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c (working copy) > @@ -1,8 +1,18 @@ > /* { dg-do compile } */ > /* { dg-options "-O2 -fdump-tree-ivopts" } */ > > +#if (__SIZEOF_LONG_LONG__ == __SIZEOF_POINTER__) > +#define TYPE unsigned long long int > +#elif (__SIZEOF_LONG__ == __SIZEOF_POINTER__) > +#define TYPE unsigned long int > +#elif (__SIZEOF_INT__ == __SIZEOF_POINTER__) > +#define TYPE unsigned int > +#else > +#error Add target support here > +#endif > + > void > -f1 (char *p, unsigned long int i, unsigned long int n) > +f1 (char *p, TYPE i, TYPE n) > { > p += i; > do > @@ -14,8 +24,7 @@ f1 (char *p, unsigned long int i, unsign > while (i < n); > } > > -/* For the fails on avr see PR tree-optimization/50322. */ > -/* { dg-final { scan-tree-dump-times "PHI" 1 "ivopts" { xfail { "avr-*-*" } > } } } */ > +/* { dg-final { scan-tree-dump-times "PHI" 1 "ivopts" } } */ > /* { dg-final { scan-tree-dump-times "PHI <p_" 1 "ivopts"} } */ > -/* { dg-final { scan-tree-dump-times "p_\[0-9\]* <" 1 "ivopts" { xfail { > "avr-*-*" } } } } */ > +/* { dg-final { scan-tree-dump-times "p_\[0-9\]* <" 1 "ivopts" } } */ > /* { dg-final { cleanup-tree-dump "ivopts" } } */