------- Comment #16 from rakdver at gcc dot gnu dot org 2005-11-01 14:15 ------- Smaller testcase:
int e_fn (int *p, int *q) { return *p - *q; } int main (void) { int a[8] = {2,2,2,2,2,2,2,2}; int b[8] = {0,1,0,1,0,1,0,1}; int A[8]; unsigned i, j; int tmp; int *p = A; for (i = 1, j = 6; i < 5; i++, j -= 2) { tmp = b[2*i-2] + 1; A[2*i - 2] = e_fn(&a[j], &tmp); tmp = b[2*i-1] + 1; A[2*i - 1] = e_fn(&a[j+1], &tmp); } for (i = 1; i < 4; i++) a[2*i-1] = p[2*i -1]; printf ("%d\n",p[7]); return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22509