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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|middle-end                  |rtl-optimization
           Severity|normal                      |enhancement
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-09-28

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Combine is able to do the combining (which is why it works on x86_64) but then
the split does not work:
Trying 10, 11, 12 -> 13:
   10: r198:DI=r204:DI+0x10
      REG_DEAD r204:DI
   11: r200:DI=r198:DI<<0x2
      REG_DEAD r198:DI
   12: r199:DI=r203:DI+r200:DI
      REG_DEAD r203:DI
      REG_DEAD r200:DI
   13: r201:SI=[r199:DI+0x4]
      REG_DEAD r199:DI
Failed to match this instruction:
(set (reg:SI 201 [ arr_2(D)->arrD.2228[1][idx_3(D)] ])
    (mem:SI (plus:DI (plus:DI (mult:DI (reg:DI 204)
                    (const_int 4 [0x4]))
                (reg:DI 203))
            (const_int 68 [0x44])) [1 arr_2(D)->arrD.2228[1][idx_3(D)]+0 S4
A32]))
Failed to match this instruction:
(set (reg/f:DI 199)
    (plus:DI (ashift:DI (reg:DI 204)
            (const_int 2 [0x2]))
        (reg:DI 203)))

Reply via email to