1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fdump-tree-optimized -fpredictive-commoning" } */ 3 4 double in; 5 extern void Write (double); foo(void)6void foo (void) 7 { 8 static double X[9]; 9 int i; 10 X[1] = in * in; 11 for (i = 2; i <= 8; i++) 12 X[i] = X[i - 1] * X[1]; 13 Write (X[5]); 14 } 15 16 /* Load of X[i - i] can be omitted by reusing X[i] in previous iteration. */ 17 /* { dg-final { scan-tree-dump-not ".* = MEM.*;" "optimized" } } */ 18