2016-08-24 50 views
0

我想弄清楚爲什麼gcc 4.9.0不會矢量化一個簡單的數組添加使用gcc 4.9.0時,使用-O -ftree-vectorize:cilk加陣列表示法沒有用gcc矢量化4.9.0

int a[256], b[256], c[256]; 
foo() { 
    int i; 
    a[:] = b[:] + c[:]; 
} 

通過觀察產生這種循環彙編尚未矢量,並與-fopt-INFO-VEC-all標誌我得到告訴我大量輸出的矢量爲什麼失敗,開頭:

>testvec.c:5: note: ===== analyze_loop_nest ===== 
>testvec.c:5: note: === vect_analyze_loop_form === 
>testvec.c:5: note: not vectorized: control flow in loop. 
>testvec.c:5: note: bad loop form. 

這是令人費解的,因爲循環中沒有控制流。爲相同的操作使用標準數組表示法的for循環的向量化工作正常。

回答