https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95229
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #5) > Built by > > #5 0x00000000020c4504 in gen_rtx_fmt_ee_stat (code=VEC_SELECT, > mode=E_V2SImode, arg0=0x0, arg1=0x7ffff6ad92e0) at ./genrtl.h:49 > #6 0x000000000211e242 in gen_sse4_1_zero_extendv2siv2di2 ( > operand0=0x7ffff6ada4f8, operand1=0x0) at insn-emit.c:40857 > #7 0x0000000002207aa7 in gen_zero_extendv2siv2di2 (operand0=0x7ffff6ada4f8, > operand1=0x7ffff6ada4c8) at ../../src/trunk/gcc/config/i386/sse.md:18012 > #8 0x00000000010cfe31 in insn_gen_fn::operator() ( > this=0x3230928 <insn_data+325096>, a0=0x7ffff6ada4f8, a1=0x7ffff6ada4c8) > at ../../src/trunk/gcc/recog.h:317 > #9 0x00000000014aed21 in maybe_gen_insn > (icode=CODE_FOR_zero_extendv2siv2di2, > nops=2, ops=0x7fffffffa8d0) at ../../src/trunk/gcc/optabs.c:7444 > #10 0x00000000014a3c7d in maybe_emit_unop_insn ( > icode=CODE_FOR_zero_extendv2siv2di2, target=0x7ffff6ada4f8, > --Type <RET> for more, q to quit, c to continue without paging-- > op0=0x7ffff6ada4c8, code=ZERO_EXTEND) at > ../../src/trunk/gcc/optabs.c:3597 > #11 0x00000000014a3d7f in emit_unop_insn > (icode=CODE_FOR_zero_extendv2siv2di2, > target=0x7ffff6ada4f8, op0=0x7ffff6ada4c8, code=ZERO_EXTEND) > at ../../src/trunk/gcc/optabs.c:3621 > #12 0x0000000001098d45 in convert_move (to=0x7ffff6ada4f8, > from=0x7ffff6ada4c8, unsignedp=1) at ../../src/trunk/gcc/expr.c:260 > #13 0x000000000109bc1e in convert_modes (mode=E_V2DImode, > oldmode=E_V2SImode, > x=0x7ffff6ada4c8, unsignedp=1) at ../../src/trunk/gcc/expr.c:737 > #14 0x000000000109b220 in convert_to_mode (mode=E_V2DImode, > x=0x7ffff6ada4c8, > unsignedp=1) at ../../src/trunk/gcc/expr.c:662 > #15 0x00000000010bae75 in expand_expr_real_2 (ops=0x7fffffffb600, > target=0x0, > tmode=E_VOIDmode, modifier=EXPAND_NORMAL) > at ../../src/trunk/gcc/expr.c:8665 > > frame #7 looks OK while #6 is bogus. Context: > > 18009 if (!MEM_P (operands[1])) > 18010 { > 18011 operands[1] = simplify_subreg (V4SImode, operands[1], > V2SImode, 0); > 18012 emit_insn (gen_sse4_1_<code>v2siv2di2 (operands[0], > operands[1])); > 18013 DONE; > > simplify_subreg returns NULL. It is originally (reg:V2SI 90 [ vect__2.8 ]). > Should that be simplify_gen_subreg? That fixes the testcase. But simplify_subreg is used in a lot more places so leaving to Uros to match up with expectations.