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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Before combine we have:
(insn 6 5 7 2 (parallel [
            (set (reg:SI 92)
                (ashiftrt:SI (reg:SI 93 [ b ])
                    (const_int 11 [0xb])))
            (clobber (reg:CC 17 flags))
        ]) "pr78438.c":7 563 {*ashrsi3_1}
     (expr_list:REG_DEAD (reg:SI 93 [ b ])
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (expr_list:REG_EQUAL (ashiftrt:SI (mem/c:SI (symbol_ref:DI ("b")
[flags 0x2]  <var_decl 0x7f8ffbb66ea0 b>) [1 b+0 S4 A32])
                    (const_int 11 [0xb]))
                (nil)))))
(insn 7 6 8 2 (parallel [
            (set (reg:HI 94)
                (lshiftrt:HI (subreg:HI (reg:SI 92) 0)
                    (const_int 15 [0xf])))
            (clobber (reg:CC 17 flags))
        ]) "pr78438.c":7 572 {*lshrhi3_1}
     (expr_list:REG_DEAD (reg:SI 92)
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))
combine turns that into non-equivalent:
(insn 7 6 8 2 (parallel [
            (set (reg:SI 94)
                (ashiftrt:SI (reg:SI 93 [ b ])
                    (const_int 26 [0x1a])))
            (clobber (reg:CC 17 flags))
        ]) "pr78438.c":7 563 {*ashrsi3_1}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (expr_list:REG_DEAD (reg:SI 93 [ b ])
            (nil))))

Reply via email to