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)