/* { dg-do compile } */ /* { dg-options "-fgcse -fgcse-sm" } */ typedef struct A { int buf, left; } A; static void flush(A *s, int n) { s->buf <<= n; while (s->left < 32) { s->buf <<= 8; s->left += 8; } s->buf=0; } void oof(A *s, int n) { s->buf = n; s->left = n; flush(s, n); }