> Do you have specific testcase?  It would be interesting to see if new
> optimizer can catch up at least on kill-loop branch.

Here is a simplified version of what I observed.  In the non-FDO case,
the loop invariant load of the constant 32 is removed from the loop.
When FDO is enabled, the load remains in the loop.

float farray[100];

int main (int argc, char *argv[])
{
    int m;

    for( m = 0; m < 100; m++ )
    {
        farray[m] = 32;
    }
}

I'm compiling it as follows using a version of gcc built from
mainline yesterday.

Non-FDO:
gcc -O3 -funroll-loops -fpeel-loops -o test test.c

FDO:
gcc -O3 -funroll-loops -fpeel-loops -fprofile-generate -o test test.c
./test
gcc -O3 -funroll-loops -fpeel-loops -fprofile-use -o test test.c

Pete

Reply via email to