/* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-options "-O2 -fno-tree-loop-distribute-patterns" } */ /* Note that it's required to disable loop-distribute-patterns, otherwise the loop will be optimized to memset. */ /* Expect loop_iv can know the loop is finite so the doloop_optimize can perform the doloop transformation. */ typedef struct { int l; int b[258]; } S; void clear (S* s ) { int i; int len = s->l + 1; for (i = 0; i <= len; i++) s->b[i] = 0; } /* { dg-final { scan-assembler {\mbdnz\M} } } */