http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51681
Bug #: 51681 Summary: [4.7 Regression]: ICE in gcc.dg/torture/vshuf-v2si.c on ia64 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: ubiz...@gmail.com Target: ia64 Also crashes in crosscompiler: ~/gcc-build-xxx/gcc/cc1 -O2 -quiet vshuf-v2si.c In file included from vshuf-v2si.c:17:0: vshuf-main.inc: In function ‘test_12’: vshuf-main.inc:28:1: internal compiler error: in expand_vec_perm_shrp, at config/ia64/ia64.c:11107 Please submit a full bug report, [...] Breakpoint 2, internal_error (gmsgid=0xd8d205 "in %s, at %s:%d") at ../../gcc-svn/trunk/gcc/diagnostic.c:839 839 { (gdb) bt #0 internal_error (gmsgid=0xd8d205 "in %s, at %s:%d") at ../../gcc-svn/trunk/gcc/diagnostic.c:839 #1 0x0000000000bd4f64 in fancy_abort (file=<optimized out>, line=11107, function=0xce6410 "expand_vec_perm_shrp") at ../../gcc-svn/trunk/gcc/diagnostic.c:899 #2 0x0000000000a71885 in expand_vec_perm_shrp (d=0x7fffffffd100) at ../../gcc-svn/trunk/gcc/config/ia64/ia64.c:11107 #3 expand_vec_perm_1 (d=0x7fffffffd100) at ../../gcc-svn/trunk/gcc/config/ia64/ia64.c:11164 #4 0x0000000000a718bd in ia64_expand_vec_perm_const_1 (d=0x7fffffffd100) at ../../gcc-svn/trunk/gcc/config/ia64/ia64.c:11390 #5 0x0000000000a7af58 in ia64_expand_vec_perm_const (operands=<optimized out>) at ../../gcc-svn/trunk/gcc/config/ia64/ia64.c:11467 #6 0x0000000000a9af44 in gen_vec_perm_constv2si (operand0=0x7ffff11ff320, operand1=0x7ffff11ff0e0, operand2=0x7ffff11ff340, operand3=0x7ffff1546d80) at ../../gcc-svn/trunk/gcc/config/ia64/vect.md:1601 #7 0x00000000007a1119 in maybe_expand_insn (icode=<optimized out>, nops=<optimized out>, ops=<optimized out>) at ../../gcc-svn/trunk/gcc/optabs.c:8301 #8 0x00000000007a15fa in expand_vec_perm_1 (icode=CODE_FOR_vec_perm_constv2si, target=<optimized out>, v0=0x7ffff11ff0e0, v1=0x7ffff11fa9c0, sel=<optimized out>) at ../../gcc-svn/trunk/gcc/optabs.c:6874 #9 0x00000000007a8052 in expand_vec_perm (mode=V2SImode, v0=0x7ffff11ff0e0, v1=0x7ffff11fa9c0, sel=0x7ffff1546d80, target=0x7ffff11fa978) at ../../gcc-svn/trunk/gcc/optabs.c:6915 (gdb) frame 2 #2 0x0000000000a71885 in expand_vec_perm_shrp (d=0x7fffffffd100) at ../../gcc-svn/trunk/gcc/config/ia64/ia64.c:11107 11107 gcc_assert (IN_RANGE (shift, 1, 63)); (gdb) p shift $1 = 96 (gdb) p d->perm[0] $2 = 3 '\003' (gdb) p debug_rtx (d->op0) (reg:V2SI 340 [ a.22 ]) $3 = void (gdb) p debug_rtx (d->op1) (reg:V2SI 358) $4 = void Probably some adjustment to shift is missing when selecting second operand.