https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98365
--- Comment #5 from Hongtao.liu <crazylht at gmail dot com> --- > > And successully vectorized. > Also vectorized loop with cnt defined as signed short. .i.e int foo (short a[64], short c[64]) { int i; short cnt=0; for (int i = 0;i != 64; i++) if (a[i] == c[i]) cnt++; return cnt; } Since signed integer overflow is undefined in C++ and C, gcc would always convert signed char/short to unsigned char/short to avoid UB, and ifcvt should be able to "properly" hanlde those nop conversion.