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

--- Comment #3 from ktkachov at gcc dot gnu.org ---
Although, that seems to be exposing something else that's fishy, looking at the
combine dumps I see it combining:
(insn 19 42 20 2 (set (subreg:DI (reg:QI 94) 0)
        (const_int 255 [0xff])) bfi.c:7 50 {*movdi_aarch64}
     (nil))
(insn 20 19 21 2 (set (reg:DI 95)
        (subreg:DI (reg:QI 94) 0)) bfi.c:7 50 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg:QI 94)
        (expr_list:REG_EQUAL (const_int 255 [0xff])
            (nil))))

into:

(insn 20 19 21 2 (set (reg:DI 95)
        (const_int -1 [0xffffffffffffffff])) bfi.c:7 50 {*movdi_aarch64}
     (expr_list:REG_EQUAL (const_int 255 [0xff])
        (nil)))

That's where the -1 comes from. Need to see why the reg94 := 255 was
represented that way (with a subreg)

Reply via email to