Hi, this patch fixes PR66444, a problem with -fipa-ra in reload_combine. The problem is that for the test-case, reload_combine combines these two insns: ... (insn 13 12 14 2 (parallel [ (set (reg/v/f:DI 37 r8 [orig:92 xD.1858 ] [92]) (plus:DI (reg:DI 37 r8 [96]) (reg:DI 0 ax [orig:95 D.1884 ] [95]))) (clobber (reg:CC 17 flags)) ]) (expr_list:REG_EQUAL (plus:DI (reg:DI 0 ax [orig:95 D.1884 ] [95]) (const_int 962072674304 [0xe000000000])) (nil))) (insn 14 13 15 2 (set (reg:DI 5 di) (reg/v/f:DI 37 r8 [orig:92 xD.1858 ] [92])) (nil)) ... into this insn: ... (insn 14 12 15 2 (set (reg:DI 5 di) (plus:DI (reg:DI 37 r8 [96]) (reg:DI 0 ax [orig:95 D.1884 ] [95]))) (nil)) ... That removes the set of r8 by insn 13. And that set of r8 is used by insn 16: .... (call_insn 15 ...) (insn 16 15 17 2 (set (reg:DI 5 di) (reg/v/f:DI 37 r8 [orig:92 x ] [92])) test.c:33 85 {*movdi_internal} (nil)) ... But reload_combine doesn't acknowledge that use, because it considers that r8 is killed by call_insn 15. The patch fixes the problem by using get_call_reg_set_usage to find out that r8 is actually not killed by the call_insn. Bootstrapped and reg-tested on x86_64 on top of trunk. OK for trunk and gcc-5-branch? Thanks, - Tom