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.

Reply via email to