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

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
The post-reload splitter chokes on a subreg.

(define_split
  [(set (match_operand:TI 0 "nonimmediate_operand")
        (match_operand:TI 1 "general_operand"))]
  "reload_completed
   && !SSE_REG_P (operands[0]) && !SSE_REG_P (operands[1])"
  [(const_int 0)]
  "ix86_split_long_move (operands); DONE;")

#1  0x0000000000fd8441 in gen_split_19 (curr_insn=<optimized out>,
operands=0x1f79da0 <recog_data>) at ../../git/gcc/gcc/config/i386/i386.md:2124
2124      "ix86_split_long_move (operands); DONE;")

(gdb) p debug_rtx (operands[0])
(subreg:TI (reg/v:V2TI 21 xmm0 [orig:92 v32u128_0 ] [92]) 0)
$1 = void
(gdb) p debug_rtx (operands[1])
(mem/c:TI (plus:DI (reg/f:DI 7 sp)
        (const_int -56 [0xffffffffffffffc8])) [2 %sfp+-32 S16 A256])
$2 = void

Looks like RA failure to me, since in _.reload we have:

(insn 32 16 17 2 (set (subreg:TI (reg/v:V2TI 21 xmm0 [orig:92 v32u128_0 ] [92])
0)
        (mem/c:TI (plus:DI (reg/f:DI 7 sp)
                (const_int -56 [0xffffffffffffffc8])) [2 %sfp+-32 S16 A256]))
pr69530.c:6 84 {*movti_internal}
     (nil))

Reply via email to