Link to the Compiler Explorer: https://godbolt.org/z/bboxEaWWx Reproducer: extern short arr_108[][4][2][24][12], arr_110[][4][2][24][12]; void test() { for (unsigned a = 0; a < 2; a += 2) for (unsigned b = 4; b < 22; b++) for (int c = 1; c < 11; c++) arr_110[0][0][a][b][c] = (unsigned char)arr_108[0][0][a][b][c]; } Error: >$ g++ -O3 -c func.cpp func.cpp: In function 'void test()': func.cpp:7:1: error: unrecognizable insn: 7 | } | ^ (insn 18 17 19 2 (set (reg:V1TI 202) (ashift:V1TI (subreg:V1TI (reg:V8HI 117 [ vect__15.12 ]) 0) (const_int 4294967264 [0xffffffe0]))) "func.cpp":6:70 -1 (nil)) during RTL pass: vregs func.cpp:7:1: internal compiler error: in extract_insn, at recog.cc:2791 0x85ea0e _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /testing/gcc/gcc_src_master/gcc/rtl-error.cc:108 0x85ea30 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) /testing/gcc/gcc_src_master/gcc/rtl-error.cc:116 0x85cf23 extract_insn(rtx_insn*) /testing/gcc/gcc_src_master/gcc/recog.cc:2791 0xecdac5 instantiate_virtual_regs_in_insn /testing/gcc/gcc_src_master/gcc/function.cc:1611 0xecdac5 instantiate_virtual_regs /testing/gcc/gcc_src_master/gcc/function.cc:1985 0xecdac5 execute /testing/gcc/gcc_src_master/gcc/function.cc:2034 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. gcc version 13.0.0 20220512 (7f78783dbedca0183d193e475262ca3c489fd365)
Started with r13-210-gfcda0efccad41eba.
Mine, I'm testing a patch.
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>: https://gcc.gnu.org/g:69c4b5c519f0df37e4903992644cc29682721bc1 commit r13-468-g69c4b5c519f0df37e4903992644cc29682721bc1 Author: liuhongt <hongtao.liu@intel.com> Date: Fri May 13 15:48:01 2022 +0800 Fix ICE caused by wrong condition. When d->perm[i] == d->perm[i-1] + 1 and d->perm[i] == nelt, it's not continuous. It should fail if there's more than 2 continuous areas. gcc/ChangeLog: PR target/105587 * config/i386/i386-expand.cc (expand_vec_perm_pslldq_psrldq_por): Fail when (d->perm[i] == d->perm[i-1] + 1) && d->perm[i] == nelt && start != -1. gcc/testsuite/ChangeLog: * gcc.target/i386/pr105587.c: New test.
Fixed in GCC13.
Noticed the same ICE on stv-av1-1.0.0. https://gcc.gnu.org/g:69c4b5c519f0df37e4903992644cc29682721bc1 did fix it for me.
Should this PR be closed now?
Yes.