https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86683
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- This is caused by fact that: enum insn_code { CODE_FOR_nothing = 0, ... CODE_FOR_p8_vmrgew_v4sf = CODE_FOR_nothing, CODE_FOR_p8_vmrgew_v4si = CODE_FOR_nothing, CODE_FOR_p8_vmrgow_v4sf = CODE_FOR_nothing, CODE_FOR_p8_vmrgow_v4si = CODE_FOR_nothing, CODE_FOR_p8_vmrgew_v4sf_direct = CODE_FOR_nothing, CODE_FOR_p8_vmrgew_v4si_direct = CODE_FOR_nothing, CODE_FOR_p8_vmrgow_v4sf_direct = CODE_FOR_nothing, CODE_FOR_p8_vmrgow_v4si_direct = CODE_FOR_nothing, ... } and then in altivec_expand_vec_perm_const: patterns[j] (with j == 8) is accessed and it's CODE_FOR_nothing. Thus insn_gen_fn::operator() segfaults.