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

--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Before the first RTL CSE, we have on that second strcpy:

(call_insn 47 46 0 2 (parallel [
            (set (reg:DI 3 3)
                (call (mem:SI (symbol_ref:DI ("strcpy") [flags 0x41] 
<function_decl 0x3fff900ea000 strcpy>) [0 __builtin_strcpy S4 A8])
                    (const_int 64 [0x40])))
            (clobber (reg:DI 65 lr))
        ]) 71709.c:17 677 {*call_value_nonlocal_aixdi}
     (expr_list:REG_CALL_DECL (symbol_ref:DI ("strcpy") [flags 0x41] 
<function_decl 0x3fff900ea000 strcpy>)
        (expr_list:REG_EH_REGION (const_int 0 [0])
            (nil)))
    (expr_list (use (reg:DI 2 2))
        (expr_list:DI (set (reg:DI 3 3)
                (reg:DI 3 3))
            (expr_list:DI (use (reg:DI 3 3))
                (expr_list:DI (use (reg:DI 4 4))
                    (nil))))))

but after cse1 it is:

(call_insn 47 46 0 2 (parallel [
            (set (reg:DI 3 3)
                (call (mem:SI (symbol_ref:DI ("strcpy") [flags 0x41] 
<function_decl 0x3fff900ea000 strcpy>) [0 __builtin_strcpy S4 A8])
                    (const_int 64 [0x40])))
            (clobber (reg:DI 65 lr))
        ]) 71709.c:17 677 {*call_value_nonlocal_aixdi}
     (expr_list:REG_DEAD (reg:DI 4 4)
        (expr_list:REG_UNUSED (reg:DI 3 3)
            (expr_list:REG_CALL_DECL (symbol_ref:DI ("strcpy") [flags 0x41] 
<function_decl 0x3fff900ea000 strcpy>)
                (expr_list:REG_EH_REGION (const_int 0 [0])
                    (nil)))))
    (expr_list (use (reg:DI 2 2))
        (expr_list:DI (set (reg:DI 3 3)
                (reg:DI 3 3))
            (expr_list:DI (use (reg:DI 3 3))
                (expr_list:DI (use (reg:DI 4 4))
                    (nil))))))

(note the REG_UNUSED).

Reply via email to