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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-04-05
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
For the init function:
(insn 5 2 6 (set (reg/f:SI 15 a5 [134])
        (high:SI (symbol_ref:SI ("Data") [flags 0x86]  <var_decl 0x7f183060d900
Data>))) "t4.c":5:10 180 {*movsi_internal}
     (expr_list:REG_EQUIV (high:SI (symbol_ref:SI ("Data") [flags 0x86] 
<var_decl 0x7f183060d900 Data>))
        (nil)))
(insn 6 5 13 (set (reg/f:SI 15 a5 [135])
        (lo_sum:SI (reg/f:SI 15 a5 [134])
            (symbol_ref:SI ("Data") [flags 0x86]  <var_decl 0x7f183060d900
Data>))) "t4.c":5:10 174 {*lowsi}
     (expr_list:REG_EQUIV (symbol_ref:SI ("Data") [flags 0x86]  <var_decl
0x7f183060d900 Data>)
        (nil)))
(insn 13 6 14 (set (reg:SI 13 a3 [137])
        (const_int 0 [0])) "t4.c":5:10 180 {*movsi_internal}
     (nil))
(insn 14 13 15 (set (reg:SI 14 a4 [+4 ])
        (const_int 0 [0])) "t4.c":5:10 180 {*movsi_internal}
     (nil))
(insn 15 14 16 (set (mem/c:SI (reg/f:SI 15 a5 [135]) [1 Data+0 S4 A64])
        (reg:SI 13 a3 [137])) "t4.c":5:10 180 {*movsi_internal}
     (expr_list:REG_DEAD (reg:SI 13 a3 [137])
        (nil)))
(insn 16 15 23 (set (mem/c:SI (plus:SI (reg/f:SI 15 a5 [135])
                (const_int 4 [0x4])) [1 Data+4 S4 A32])
        (reg:SI 14 a4 [+4 ])) "t4.c":5:10 180 {*movsi_internal}
     (expr_list:REG_DEAD (reg/f:SI 15 a5 [135])
        (expr_list:REG_DEAD (reg:SI 14 a4 [+4 ])
            (nil))))


LRA/reload decides to change:
(insn 7 6 10 2 (set (mem/c:DI (reg/f:SI 135) [1 Data+0 S8 A64])
        (const_int 0 [0])) "t4.c":5:10 178 {*movdi_32bit}
     (expr_list:REG_DEAD (reg/f:SI 135)
        (nil)))

To:
(insn 7 6 12 2 (set (reg:DI 13 a3 [137])
        (const_int 0 [0])) "t4.c":5:10 178 {*movdi_32bit}
     (nil))
(insn 12 7 10 2 (set (mem/c:DI (reg/f:SI 15 a5 [135]) [1 Data+0 S8 A64])
        (reg:DI 13 a3 [137])) "t4.c":5:10 178 {*movdi_32bit}
     (nil))

I would have expected not have happened ...
So the init function is definitely a target issue As LRA should have kept it as
one store instruction ...

Reply via email to