/* { dg-options "-O3 -fgraphite-identity -fdump-tree-graphite-all" } */ typedef struct { int mode,state,num,state_out; unsigned char* bits; char *out; }test; unsigned char copy( test* s ) { while(1) { if (s->mode == 0) break; if (s->state_out >= s->num) break; *(s->out) = s->bits[s->state_out]; if (s->mode == 0) s->mode++; } } unsigned char compress(test *in) { unsigned char p_in, p_out; while(1) { if (in->state == 1) { p_out |= copy(in); if (in->state_out < in->num) break; } } return p_in || p_out; } /* { dg-final { cleanup-tree-dump "graphite" } } */