/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats -std=c99 -fno-tree-loop-im" } */ int foo(int k, int *x) { int j=0; int res = 0; /* We should pull res = *x all the way out of the do-while */ do { for (int n=0;n<3;++n); res = *x; } while (++j<k); return res; } /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */