https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100885
Bug ID: 100885 Summary: [12 Regression] ICE: in extract_constrain_insn, at recog.c:2671: insn does not satisfy its constraints: {sse4_1_zero_extendv8qiv8hi2} Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: zsojka at seznam dot cz Target Milestone: --- Host: x86_64-pc-linux-gnu Target: x86_64-pc-linux-gnu Created attachment 50912 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50912&action=edit auto-reduced testcase (from OpenTTD sources) Compiler output: $ x86_64-pc-linux-gnu-gcc -O2 -mavx512vl testcase.C testcase.C: In instantiation of 'void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams*, ZoomLevel) [with BlitterMode <anonymous> = BM_COLOUR_REMAP; Blitter_32bppSSE_Base::ReadMode <anonymous> = Blitter_32bppSSE_Base::RM_WITH_MARGIN; Blitter_32bppSSE_Base::BlockType <anonymous> = Blitter_32bppSSE_Base::BT_NONE; bool <anonymous> = true; bool <anonymous> = false]': testcase.C:154:62: required from here testcase.C:120:27: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] 120 | Colour *src_rgba_line = (Colour *)sd->data; | ^~~~~~~~~~~~~~~~~~ testcase.C:130:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] 130 | int mvX2 = *(unsigned *)sd->infos[zoom], m = byte(mvX2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ testcase.C: In member function 'void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams*, ZoomLevel) [with BlitterMode <anonymous> = BM_COLOUR_REMAP; Blitter_32bppSSE_Base::ReadMode <anonymous> = Blitter_32bppSSE_Base::RM_WITH_MARGIN; Blitter_32bppSSE_Base::BlockType <anonymous> = Blitter_32bppSSE_Base::BT_NONE; bool <anonymous> = true; bool <anonymous> = false]': testcase.C:150:1: error: insn does not satisfy its constraints: 150 | } | ^ (insn 295 221 134 12 (set (reg:V8HI 22 xmm2 [230]) (zero_extend:V8HI (vec_select:V8QI (reg:V16QI 52 xmm16 [orig:134 __trans_tmp_5 ] [134]) (parallel [ (const_int 0 [0]) (const_int 1 [0x1]) (const_int 2 [0x2]) (const_int 3 [0x3]) (const_int 4 [0x4]) (const_int 5 [0x5]) (const_int 6 [0x6]) (const_int 7 [0x7]) ])))) "testcase.C":49:46 4653 {sse4_1_zero_extendv8qiv8hi2} (expr_list:REG_DEAD (reg:V16QI 52 xmm16 [orig:134 __trans_tmp_5 ] [134]) (nil))) during RTL pass: cprop_hardreg testcase.C:150:1: internal compiler error: in extract_constrain_insn, at recog.c:2671 0x7ece3a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /repo/gcc-trunk/gcc/rtl-error.c:108 0x7ecec7 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) /repo/gcc-trunk/gcc/rtl-error.c:118 0x7dbaaf extract_constrain_insn(rtx_insn*) /repo/gcc-trunk/gcc/recog.c:2671 0x1292534 copyprop_hardreg_forward_1 /repo/gcc-trunk/gcc/regcprop.c:825 0x129383e execute /repo/gcc-trunk/gcc/regcprop.c:1390 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. $ x86_64-pc-linux-gnu-gcc -v Using built-in specs. COLLECT_GCC=/repo/gcc-trunk/binary-latest/bin/x86_64-pc-linux-gnu-gcc COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r12-1164-20210602094549-g659cc7d6320-checking-yes-rtl-df-extra-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++ --enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra --with-cloog --with-ppl --with-isl --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --with-ld=/usr/bin/x86_64-pc-linux-gnu-ld --with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch --prefix=/repo/gcc-trunk//binary-trunk-r12-1164-20210602094549-g659cc7d6320-checking-yes-rtl-df-extra-amd64 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.0.0 20210602 (experimental) (GCC)