1  /* { dg-do compile } */
       2  
       3  typedef struct {
       4    short a;
       5    short b;
       6  } c;
       7  c *d;
       8  int e, f, i, j, k, l, m, n, o, p;
       9  c g, h;
      10  void q() {
      11    do {
      12      if (o) {
      13        (*d).a = (*d).b = d[e].a = d[e].a * 3 + 1 >> 15;
      14        d[e].b = d[e].b * 3 + 1 >> 15;
      15      }
      16      n = -(d[e].b * g.b) >> 5;
      17      m = d[e].b * g.a + 1 >> 5;
      18      l = d[f].a * -d[f].b * h.b + 1 >> 5;
      19      k = d[f].a * h.b + d[f].b * h.a + 1 >> 5;
      20      j = n + l;
      21      i = m - k;
      22      (*d).a += j;
      23      d[e].a -= i;
      24      ++d;
      25    } while (--p);
      26  }