[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