https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61618

            Bug ID: 61618
           Summary: [4.10 Regression]: ICE in expand_vec_perm_pblendv, at
                    config/i386/i386.c with -mavx
           Product: gcc
           Version: 4.10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ubizjak at gmail dot com

gcc.dg/torture/vshuf-v8sf.c currently fails with -O2 -mavx:

gcc.dg/torture/vshuf-main.inc: In function ‘test_9’:
gcc.dg/torture/vshuf-main.inc:15:5: internal compiler error: in
expand_vec_perm_pblendv, at config/i386/i386.c:43257
   d = __builtin_shuffle (a, b, mask);  \
     ^
gcc.dg/torture/vshuf-8.inc:12:1: note: in expansion of macro ‘T’
 T (9, 13, 11, 10, 15, 8, 5, 14, 8) \
 ^
gcc.dg/torture/vshuf-main.inc:28:1: note: in expansion of macro ‘TESTS’
 TESTS
 ^
0xc6bd88 expand_vec_perm_pblendv
        /home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:43257
0xc6bd88 ix86_expand_vec_perm_const_1
        /home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:44647
0xca4373 ix86_expand_vec_perm_const(rtx_def**)
        /home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:44768
0xd67b25 gen_vec_perm_constv8sf(rtx_def*, rtx_def*, rtx_def*, rtx_def*)
        /home/uros/gcc-svn/trunk/gcc/config/i386/sse.md:8985
0x9003f8 maybe_expand_insn(insn_code, unsigned int, expand_operand*)
        /home/uros/gcc-svn/trunk/gcc/optabs.c:8352
0x907537 expand_vec_perm_1
        /home/uros/gcc-svn/trunk/gcc/optabs.c:6626
0x9077da expand_vec_perm(machine_mode, rtx_def*, rtx_def*, rtx_def*, rtx_def*)
        /home/uros/gcc-svn/trunk/gcc/optabs.c:6667

(gdb) up
#2  0x0000000000c6bd89 in expand_vec_perm_pblendv (d=0x7fffffffd410) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:43257
43257     gcc_assert (ok);
(gdb) list
43252
43253     for (i = 0; i < nelt; ++i)
43254       dcopy.perm[i] = d->perm[i] & (nelt - 1);
43255
43256     ok = expand_vec_perm_1 (&dcopy);
43257     gcc_assert (ok);
43258
43259     /* Next we put permuted elements into their positions.  */
43260     dcopy1 = *d;
43261     if (which == 2)
(gdb)

Reply via email to