------- Comment #5 from spop at gcc dot gnu dot org 2010-03-28 16:35 ------- When defining the missing function like this:
static inline int mid_pred(int a, int b, int c) { int t= (a-b)&((a-b)>>31); a-=t; b+=t; b-= (b-c)&((b-c)>>31); b+= (a-b)&((a-b)>>31); return b; } The vectorization reports: "not vectorized: unsupported use in stmt." When this function is defined like this: static inline int mid_pred(int a, int b, int c) { if(a>b){ if(c>b){ if(c>a) b=a; else b=c; } }else{ if(b>c){ if(c>a) b=c; else b=a; } } return b; } the vectorizer stops with: "not vectorized: control flow in loop." -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43436