[Bug target/88850] [9 Regression] Hard register coming out of expand causing reload to fail.
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jan 18 13:34:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88850
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-01-18
CC| |vmakarov at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r266385, which changed the cost:
- r113: preferred VFP_REGS, alternative NO_REGS, allocno VFP_REGS
- r112: preferred VFP_REGS, alternative NO_REGS, allocno VFP_REGS
+ r113: preferred GENERAL_REGS, alternative ALL_REGS, allocno ALL_REGS
+ r112: preferred GENERAL_REGS, alternative ALL_REGS, allocno ALL_REGS
- a0(r113,l0) costs: LO_REGS:34000,34000 HI_REGS:34000,34000
CALLER_SAVE_REGS:34000,34000 GENERAL_REGS:34000,34000 VFP_D0_D7_REGS:4000,4000
VFP_LO_REGS:4000,4000 VFP_HI_REGS:4000,4000 VFP_REGS:4000,4000
ALL_REGS:34000,34000 MEM:24000,24000
- a1(r112,l0) costs: LO_REGS:34000,34000 HI_REGS:34000,34000
CALLER_SAVE_REGS:34000,34000 GENERAL_REGS:34000,34000 VFP_D0_D7_REGS:4000,4000
VFP_LO_REGS:4000,4000 VFP_HI_REGS:4000,4000 VFP_REGS:4000,4000
ALL_REGS:34000,34000 MEM:24000,24000
+ a0(r113,l0) costs: GENERAL_REGS:4000,4000 VFP_D0_D7_REGS:60000,60000
VFP_LO_REGS:60000,60000 VFP_HI_REGS:60000,60000 VFP_REGS:60000,60000
ALL_REGS:30000,30000 MEM:40000,40000
+ a1(r112,l0) costs: GENERAL_REGS:4000,4000 VFP_D0_D7_REGS:60000,60000
VFP_LO_REGS:60000,60000 VFP_HI_REGS:60000,60000 VFP_REGS:60000,60000
ALL_REGS:30000,30000 MEM:40000,40000
We have:
(insn 13 4 14 2 (set (reg:V8QI 112)
(reg:V8QI 0 r0 [ x ])) "pr88850-2.c":6:1 936 {*neon_movv8qi}
(expr_list:REG_DEAD (reg:V8QI 0 r0 [ x ])
(nil)))
(insn 14 13 7 2 (set (reg:V8QI 113)
(reg:V8QI 2 r2 [ y ])) "pr88850-2.c":6:1 936 {*neon_movv8qi}
(expr_list:REG_DEAD (reg:V8QI 2 r2 [ y ])
(nil)))
(insn 7 14 8 2 (set (reg:V8QI 2 r2)
(reg:V8QI 112)) "pr88850-2.c":7:3 936 {*neon_movv8qi}
(expr_list:REG_DEAD (reg:V8QI 112)
(nil)))
(insn 8 7 9 2 (set (reg:V8QI 0 r0)
(reg:V8QI 113)) "pr88850-2.c":7:3 936 {*neon_movv8qi}
(expr_list:REG_DEAD (reg:V8QI 113)
(nil)))
and the move instructions don't have alternatives for GPR to GPR move, that can
be done only through a VFP_REGS register.
More information about the Gcc-bugs
mailing list