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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So at combine we have:
(insn 5 2 6 2 (set (reg:QI 87 [ c ])
        (mem/c:QI (symbol_ref:DI ("c") [flags 0x2]  <var_decl 0x7fc1a1d62c60
c>) [0 c+0 S1 A8])) "/app/example.cpp":5:14 77 {*movqi_internal}
     (nil))
(insn 6 5 7 2 (parallel [
            (set (reg:QI 86)
                (xor:QI (reg:QI 87 [ c ])
                    (const_int 1 [0x1])))
            (clobber (reg:CC 17 flags))
        ]) "/app/example.cpp":5:14 546 {*xorqi_1}
     (expr_list:REG_DEAD (reg:QI 87 [ c ])
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (expr_list:REG_EQUAL (xor:QI (mem/c:QI (symbol_ref:DI ("c") [flags
0x2]  <var_decl 0x7fc1a1d62c60 c>) [0 c+0 S1 A8])
                    (const_int 1 [0x1]))
                (nil)))))
(insn 7 6 12 2 (set (reg:SI 85)
        (sign_extend:SI (reg:QI 86))) "/app/example.cpp":5:14 154 {extendqisi2}
     (expr_list:REG_DEAD (reg:QI 86)
        (nil)))

The load is not loaded into the full SI/DI register yet. The change to SI mode
for xor happens after reload in split2.

So yes it is a target issue.

Reply via email to