1  /* { dg-do run } */
       2  /* { dg-require-effective-target int32plus } */
       3  
       4  extern void abort(void);
       5  typedef unsigned int BF_word;
       6  typedef BF_word BF_key[16 + 2];
       7  static struct {
       8      BF_key P;
       9  } BF_current;
      10  int main(void)
      11  {   
      12      BF_word L;
      13      BF_word tmp4, *ptr;
      14      BF_word i;
      15      for (i = 0; i < 16 + 2; i++)
      16          BF_current.P[i] = i * 0x98765432;
      17      L = 0;
      18      ptr = BF_current.P;
      19      do {
      20          ptr += 2;
      21          L ^= BF_current.P[0];
      22          tmp4 = L >> 24;
      23          L = tmp4 ^ BF_current.P[16 + 1];
      24          *(ptr - 2) = L;
      25      } while (ptr < &BF_current.P[16 + 2]);
      26      if (L != 0x1fdb9752)
      27          abort();
      28      return 0;
      29  }