https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81924
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org Target Milestone|5.5 |6.5 Summary|[5 Regression] ICE: in |[6/7/8 Regression] ICE: in |simplify_binary_operation_1 |simplify_binary_operation_1 |, at simplify-rtx.c:3678 on |, at simplify-rtx.c:3678 on |powerpc64le-linux-gnu |powerpc64le-linux-gnu --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- We don't ICE anymore on this starting with r229173, but that IMHO just makes the bug latent rather than being a real fix. The bug I see is that the powerpc backend splits (insn 75 74 76 2 (set (mem/c:V1TI (reg:DI 8 8) [0 S16 A128]) (reg:V1TI 10 10)) 662 {*vsx_movv1ti} (nil)) (insn 76 75 15 2 (set (reg:V1TI 77 0) (mem/c:V1TI (reg:DI 8 8) [0 S16 A128])) 634 {*vsx_le_perm_load_v1ti} (nil)) into: (insn 111 74 112 2 (set (mem/c:DI (reg:DI 8 8) [0 S8 A128]) (reg:DI 10 10)) 417 {*movdi_internal64} (nil)) (insn 112 111 113 2 (set (mem/c:DI (plus:DI (reg:DI 8 8) (const_int 8 [0x8])) [0 S8 A64]) (reg:DI 11 11 [+8 ])) 417 {*movdi_internal64} (nil)) (insn 113 112 114 2 (set (reg:V1TI 77 0) (vec_select:V1TI (mem/c:V1TI (reg:DI 8 8) [0 S16 A128]) (parallel [ (const_int 1 [0x1]) (const_int 0 [0]) ]))) 797 {*vsx_lxvd2x2_le_v1ti} (nil)) (insn 114 113 15 2 (set (reg:V1TI 77 0) (vec_select:V1TI (reg:V1TI 77 0) (parallel [ (const_int 1 [0x1]) (const_int 0 [0]) ]))) 789 {*vsx_xxpermdi2_le_v1ti} (nil)) That is obviously invalid RTL, V1TImode has only one element, so you can't select part 1 of it, only part 0.