From 058e0bb91b0f9ea8e8e2e1bfe536909e88a0c725 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 16 Dec 1995 18:16:01 -0500 Subject: (optimize_reg_copy_2): Don't attempt optimization if destination register dies. From-SVN: r10780 --- gcc/local-alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/local-alloc.c') diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 647b2d5..9d941fe 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -865,7 +865,7 @@ optimize_reg_copy_1 (insn, dest, src) In that case, we can replace all uses of DEST, starting with INSN and ending with the set of SRC to DEST, with SRC. We do not do this optimization if a CALL_INSN is crossed unless SRC already crosses a - call. + call or if DEST dies before the copy back to SRC. It is assumed that DEST and SRC are pseudos; it is too complicated to do this for hard registers since the substitutions we may make might fail. */ @@ -930,6 +930,7 @@ optimize_reg_copy_2 (insn, dest, src) } if (reg_set_p (src, p) + || find_reg_note (p, REG_DEAD, dest) || (GET_CODE (p) == CALL_INSN && reg_n_calls_crossed[sregno] == 0)) break; } -- cgit v1.1