111
|
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 }
|