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)10int 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