------- Additional Comments From kazu at cs dot umass dot edu 2004-12-09 01:32 ------- Here is a complete testcase that fails at DOM1. With -O0, this testcase prints "5 5 5". With -O1, this testcase prints "5 5 0".
I generated this testcase from final_cleanup after disabling DOM[123]. extern int printf (__const char *__restrict __format, ...); void divisors_bug (int *t, unsigned int e) { int * d23; unsigned int ivtmp14; int * ivtmp7; int * d; int * tmp; d23 = t + 1; *d23 = 5; if (e != 0) goto L24; else goto L6; L24: tmp = t; d = d23; ivtmp14 = 0; goto L2; L22: ivtmp7 = tmp; L1: d23 = d23 + 1; *d23 = *(ivtmp7 + 1); ivtmp7 = ivtmp7 + 1; if (d > ivtmp7) goto L1; else goto L4; L4: ivtmp14 = ivtmp14 + 1; if (e != ivtmp14) goto L23; else goto L6; L23: tmp = d; d = d23; L2: if (d > tmp) goto L22; else goto L4; L6: return; } int main (void) { int t[4]; int i; divisors_bug (t,2); for(i = 1; i < 4; i++) printf ("%d ", t[i]); printf ("\n"); return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18694