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

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
That is the following (I am using ubuntu's 5.3.1 in 1604 right now):
Trying 944, 945 -> 946:
Successfully matched this instruction:
(set (reg:DI 1 x1)
    (ior:DI (ashift:DI (reg/f:DI 110 [ obj1$4 ])
            (const_int 32 [0x20]))
        (reg/f:DI 419)))


Where 944, 945 and 946 was:
(insn 944 943 945 100 (set (zero_extract:DI (reg/v:DI 197 [ obj1 ])
            (const_int 32 [0x20])
            (const_int 0 [0]))
        (reg/f:DI 419)) isl_input.c:2496 687 {*insv_regdi}
     (nil))
(insn 945 944 946 100 (set (zero_extract:DI (reg/v:DI 197 [ obj1 ])
            (const_int 32 [0x20])
            (const_int 32 [0x20]))
        (reg/f:DI 110 [ obj1$4 ])) isl_input.c:2496 687 {*insv_regdi}
     (expr_list:REG_DEAD (reg/f:DI 110 [ obj1$4 ])
        (nil)))
(insn 946 945 947 100 (set (reg:DI 1 x1)
        (reg/v:DI 197 [ obj1 ])) isl_input.c:2496 48 {*movdi_aarch64}
     (expr_list:REG_DEAD (reg/v:DI 197 [ obj1 ])
        (nil)))

Is an invalid combine.  GCC must be thinking the upper bits of reg 419 (aka
487) was zero for some reason.

Reply via email to