[Bug target/92303] [10 regression] gcc.target/sparc/ultrasp12.c times out
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 10 18:55:47 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92303
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, quite early during LRA we get:
(insn 14 13 18 3 (set (reg:DI 9 %o1)
(zero_extend:DI (subreg:SI (mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -8 [0xfffffffffffffff8])) [4 %sfp+-8 S8
A64]) 4))) "ultrasp13.c":23:7 179 {*zero_extendsidi2_insn_sp64}
(nil))
(insn 18 14 15 3 (set (reg:DI 111 [ ivtmp.11 ])
(plus:DI (reg:DI 111 [ ivtmp.11 ])
(const_int 8 [0x8]))) "ultrasp13.c":17:3 224 {*adddi3_sp64}
(nil))
(insn 15 18 16 3 (set (reg:DI 8 %o0)
(zero_extend:DI (subreg:SI (mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -8 [0xfffffffffffffff8])) [4 %sfp+-8 S8
A64]) 0))) "ultrasp13.c":23:7 179 {*zero_extendsidi2_insn_sp64}
(expr_list:REG_DEAD (reg/v:V8QI 114 [ v ])
(nil)))
It isn't clear why the subreg of the mem isn't folded to a mem/c:SI.
Further iteration tries to do:
(insn 44 13 45 3 (set (reg:V8QI 126)
(mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -8 [0xfffffffffffffff8])) [4 %sfp+-8 S8 A64]))
"ultrasp13.c":23:7 470 {*movv8qi_insn_sp64}
(nil))
(insn 45 44 14 3 (set (reg:SI 127)
(subreg:SI (reg:V8QI 126) 4)) "ultrasp13.c":23:7 116 {*movsi_insn}
(expr_list:REG_DEAD (reg:V8QI 126)
(nil)))
(insn 14 45 18 3 (set (reg:DI 9 %o1)
(zero_extend:DI (reg:SI 127))) "ultrasp13.c":23:7 179
{*zero_extendsidi2_insn_sp64}
(expr_list:REG_DEAD (reg:SI 127)
(nil)))
(insn 18 14 42 3 (set (reg:DI 111 [ ivtmp.11 ])
(plus:DI (reg:DI 111 [ ivtmp.11 ])
(const_int 8 [0x8]))) "ultrasp13.c":17:3 224 {*adddi3_sp64}
(nil))
(insn 42 18 43 3 (set (reg:V8QI 124)
(mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -8 [0xfffffffffffffff8])) [4 %sfp+-8 S8 A64]))
"ultrasp13.c":23:7 470 {*movv8qi_insn_sp64}
(nil))
(insn 43 42 15 3 (set (reg:SI 125)
(subreg:SI (reg:V8QI 124) 0)) "ultrasp13.c":23:7 116 {*movsi_insn}
(expr_list:REG_DEAD (reg:V8QI 124)
(nil)))
(insn 15 43 16 3 (set (reg:DI 8 %o0)
(zero_extend:DI (reg:SI 125))) "ultrasp13.c":23:7 179
{*zero_extendsidi2_insn_sp64}
(expr_list:REG_DEAD (reg:SI 125)
(nil)))
and the insn 43 then reloaded into:
(insn 46 42 43 3 (set (mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -16 [0xfffffffffffffff0])) [4 %sfp+-16 S8 A64])
(reg:V8QI 124)) "ultrasp13.c":23:7 470 {*movv8qi_insn_sp64}
(expr_list:REG_DEAD (reg:V8QI 124)
(nil)))
(insn 43 46 15 3 (set (reg:SI 125)
(subreg:SI (mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -16 [0xfffffffffffffff0])) [4 %sfp+-16 S8 A64])
0)) "ultrasp13.c":23:7 116 {*movsi_insn}
(expr_list:REG_DEAD (reg:V8QI 128 [124])
(nil)))
and then
(insn 47 46 48 3 (set (reg:V8QI 129)
(mem/c:V8QI (plus:DI (reg/f:DI 101 %sfp)
(const_int -16 [0xfffffffffffffff0])) [4 %sfp+-16 S8 A64]))
"ultrasp13.c":23:7 470 {*movv8qi_insn_sp64}
(nil))
(insn 48 47 43 3 (set (reg:SI 130)
(subreg:SI (reg:V8QI 129) 0)) "ultrasp13.c":23:7 116 {*movsi_insn}
(expr_list:REG_DEAD (reg:V8QI 129)
(nil)))
(insn 43 48 15 3 (set (reg:SI 125)
(reg:SI 130)) "ultrasp13.c":23:7 116 {*movsi_insn}
(expr_list:REG_DEAD (reg:SI 130)
(nil)))
and now we are back at two steps before with insn 48 now being what insn 43
used to be, and like that forever.
More information about the Gcc-bugs
mailing list