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;
main(void)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 }
30