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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2026-03-21
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
           Assignee|pinskia at gcc dot gnu.org         |unassigned at gcc dot 
gnu.org

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
It is LRA trying to reload the address inside this instruction:
```
(insn 37 36 38 3 (set (reg:SI 125 [ *_9 ])
        (mem:SI (plus:DI (mult:DI (sign_extend:DI (reg:SI 92 [ h_lsm.10 ]))
                    (const_int 4 [0x4]))
                (reg/f:DI 65 ap)) [1 *_9+0 S4 A32])) "/app/example.cpp":9:9 52
{*movsi_aarch64}
     (expr_list:REG_EQUIV (mem:SI (plus:DI (mult:DI (sign_extend:DI (reg:SI 92
[ h_lsm.10 ]))
                    (const_int 4 [0x4]))
                (reg/f:DI 65 ap)) [1 *_9+0 S4 A32])
        (nil)))
```

LRA creates:
```
(insn 78 76 79 3 (set (reg:DI 140)
        (mult:DI (sign_extend:DI (reg:SI 113 [ h_lsm.10 ]))
            (const_int 4 [0x4]))) "/app/example.cpp":9:9 -1
     (nil))
```

But that is not an instruction.

GCC 10 had produced:
```
(insn 37 36 38 3 (set (reg:SI 125 [ *_9 ])
        (mem:SI (plus:DI (sign_extract:DI (mult:DI (subreg:DI (reg:SI 92 [
h_lsm.10 ]) 0)
                        (const_int 4 [0x4]))
                    (const_int 34 [0x22])
                    (const_int 0 [0]))
                (reg/f:DI 65 ap)) [1 *_9+0 S4 A32])) "/app/example.cpp":9:9 52
{*movsi_aarch64}
     (expr_list:REG_EQUIV (mem:SI (plus:DI (sign_extract:DI (mult:DI (subreg:DI
(reg:SI 92 [ h_lsm.10 ]) 0)
                        (const_int 4 [0x4]))
                    (const_int 34 [0x22])
                    (const_int 0 [0]))
                (reg/f:DI 65 ap)) [1 *_9+0 S4 A32])
        (nil)))
```

Which worked.

Reply via email to