------- Comment #15 from rakdver at gcc dot gnu dot org 2005-11-01 14:08 ------- C testcase (needs to be compiled with -O1 -funroll-loops and complete unrolling on trees must be disabled)
int e_fn (int *p, int *q) { return *p - *q; } int main (void) { int a[8]; int b[8]; int A[8]; unsigned i, j; int C = 1, tmp; int *p; for (i = 2; i < 6; i++) { a[2 * i - 4] = 2; a[2 * i - 3] = 2; } for (i = 2; i < 6; i++) { b[2 * i - 4] = 0; b[2 * i - 3] = 0; } b[1] = e_fn (&a[0], &C); b[3] = e_fn (&a[2], &C); b[5] = e_fn (&a[4], &C); b[7] = e_fn (&a[6], &C); for (i = 1, j = 6; i < 5; i++, j -= 2) { p = A; 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 < 5; i++) { a[2*i-2] = p[2*i -2]; a[2*i-1] = p[2*i -1]; for (i = 0; i < 8; i++) } printf (" %d",a[i]); printf ("\n"); return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22509