https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98927
Hongtao.liu <crazylht at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |crazylht at gmail dot com --- Comment #2 from Hongtao.liu <crazylht at gmail dot com> --- The second parameter of _mm_extract_epi16 only accept constants, O3 didn't report this error because the loop is completed unrolled, and the code to check is in pass_expand, which is after tree unroll. _15 = VIEW_CONVERT_EXPR<vector(8) short int>(packed_8(D)); _5 = __builtin_ia32_vec_ext_v8hi (_15, 0); _31 = __builtin_ia32_vec_ext_v8hi (_15, 1); _42 = __builtin_ia32_vec_ext_v8hi (_15, 2); _53 = __builtin_ia32_vec_ext_v8hi (_15, 3); _64 = __builtin_ia32_vec_ext_v8hi (_15, 4); _75 = __builtin_ia32_vec_ext_v8hi (_15, 5); _86 = __builtin_ia32_vec_ext_v8hi (_15, 6); _13 = __builtin_ia32_vec_ext_v8hi (_15, 7);