From 7b16da78b147daa91116668c6e03b111685f8c1f Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Fri, 23 Oct 1998 14:33:35 +0000 Subject: [PATCH] * flow.c (life_analysis_1): Delete CLOBBER insns after reload. From-SVN: r23257 --- gcc/ChangeLog | 2 ++ gcc/flow.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eba3f144099..7c0212d3e9c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -26,6 +26,8 @@ Fri Oct 23 15:34:14 1998 Kaveh R. Ghazi Fri Oct 23 13:12:35 1998 Jeffrey A Law (law@cygnus.com) + * flow.c (life_analysis_1): Delete CLOBBER insns after reload. + * mn10200.md (truncated shift): Accept constant inputs too. Fri Oct 23 04:06:57 1998 Richard Earnshaw (rearnsha@arm.com) diff --git a/gcc/flow.c b/gcc/flow.c index 94251ff3842..2d3c983655f 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -1358,6 +1358,23 @@ life_analysis_1 (f, nregs) if (reload_completed) bcopy (regs_ever_live, save_regs_ever_live, (sizeof (regs_ever_live))); + /* Also remove all CLOBBER insns after reload. They can cause us to think + a value is dead when it really is not dead. */ + if (reload_completed) + { + rtx insn; + + for (insn = f; insn; insn = NEXT_INSN (insn)) + { + if (GET_CODE (insn) == INSN + && GET_CODE (PATTERN (insn)) == CLOBBER) + { + PUT_CODE (insn, NOTE); + NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; + NOTE_SOURCE_FILE (insn) = 0; + } + } + } bzero (regs_ever_live, sizeof regs_ever_live); /* Allocate and zero out many data structures -- 2.30.2