/* { dg-do run } */ /* { dg-require-effective-target int32plus } */ extern void abort(void); typedef unsigned int BF_word; typedef BF_word BF_key[16 + 2]; static struct { BF_key P; } BF_current; int main(void) { BF_word L; BF_word tmp4, *ptr; BF_word i; for (i = 0; i < 16 + 2; i++) BF_current.P[i] = i * 0x98765432; L = 0; ptr = BF_current.P; do { ptr += 2; L ^= BF_current.P[0]; tmp4 = L >> 24; L = tmp4 ^ BF_current.P[16 + 1]; *(ptr - 2) = L; } while (ptr < &BF_current.P[16 + 2]); if (L != 0x1fdb9752) abort(); return 0; }