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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Missing CSE in array        |Missing rtl PRE/GCSE in
                   |element addressing          |array element addressing
   Last reconfirmed|                            |2025-11-22
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.
This looks like a GCSE failure on x86_64 at least.

We start out with:
```
(insn 8 4 10 2 (set (reg:DI 103 [ index ])
        (sign_extend:DI (reg/v:SI 100 [ index ]))) "/app/example.c":11:25 188
{*extendsidi2_rex64}
     (nil))
(insn 10 8 11 2 (parallel [
            (set (reg:DI 106)
                (ashift:DI (reg:DI 103 [ index ])
                    (const_int 1 [0x1])))
            (clobber (reg:CC 17 flags))
        ]) "/app/example.c":11:25 1123 {*ashldi3_1}
     (expr_list:REG_DEAD (reg:DI 105 [ index ])
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))
...

(insn 33 31 35 4 (set (reg:DI 119 [ index ])
        (sign_extend:DI (reg/v:SI 100 [ index ]))) "/app/example.c":13:24 188
{*extendsidi2_rex64}
     (expr_list:REG_DEAD (reg/v:SI 100 [ index ])
        (nil)))
(insn 35 33 36 4 (parallel [
            (set (reg:DI 122)
                (ashift:DI (reg:DI 119 [ index ])
                    (const_int 1 [0x1])))
            (clobber (reg:CC 17 flags))
        ]) "/app/example.c":13:24 1123 {*ashldi3_1}
     (expr_list:REG_DEAD (reg:DI 121 [ index ])
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))
```

We replace insns 8 and 33 with a mov and insert:
```
(insn 8 4 48 2 (set (reg:DI 127 [ index ])
        (sign_extend:DI (reg/v:SI 100 [ index ]))) "<source>":11:25 188
{*extendsidi2_rex64}
     (nil))
```

But insn 35 and 10 are also redundant with each other.

Reply via email to