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).