gcc auto-vectorisation (unhandled data-ref)
问题 I do not understand why such code is not vectorized with gcc 4.4.6 int MyFunc(const float *pfTab, float *pfResult, int iSize, int iIndex) { for (int i = 0; i < iSize; i++) pfResult[i] = pfResult[i] + pfTab[iIndex]; } note: not vectorized: unhandled data-ref However, if I write the following code int MyFunc(const float *pfTab, float *pfResult, int iSize, int iIndex) { float fTab = pfTab[iIndex]; for (int i = 0; i < iSize; i++) pfResult[i] = pfResult[i] + fTab; } gcc succeeds auto-vectorize