Hi, The test reports bogus failures because the loop variable i is declared as int, and the constant expected in the dump doesn't fit in an int for avr.
Fixed by explicitly using __INT32_TYPE__ for targets with __SIZEOF_INT__ < 4. Committed to trunk as obvious. Regards Senthil gcc/testsuite/ 2017-05-09 Senthil Kumar Selvaraj <senthil_kumar.selva...@atmel.com> * gcc.dg/tree-ssa/cunroll-13.c: Use __INT32_TYPE__ for for targets with __SIZEOF_INT__ < 4. diff --git gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c index f3fe8b51468..904e6dc075b 100644 --- gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c +++ gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c @@ -1,10 +1,17 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fdisable-tree-evrp -fdisable-tree-cunrolli -fdisable-tree-vrp1 -fdump-tree-cunroll-blocks-details" } */ + +#if __SIZEOF_INT__ < 4 +__extension__ typedef __INT32_TYPE__ i32; +#else +typedef int i32; +#endif + struct a {int a[8];int b;}; void t(struct a *a) { - for (int i=0;i<123456 && a->a[i];i++) + for (i32 i=0;i<123456 && a->a[i];i++) a->a[i]++; } /* This pass relies on the fact that we do not eliminate the redundant test for i early.