| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -fdump-tree-optimized -fpredictive-commoning" } */ | |
| double in; | |
| extern void Write (double); | |
| void foo (void) | |
| { | |
| static double X[9]; | |
| int i; | |
| X[1] = in * in; | |
| for (i = 2; i <= 8; i++) | |
| X[i] = X[i - 1] * X[1]; | |
| Write (X[5]); | |
| } | |
| /* Load of X[i - i] can be omitted by reusing X[i] in previous iteration. */ | |
| /* { dg-final { scan-tree-dump-not ".* = MEM.*;" "optimized" } } */ |