aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-06-03 22:08:38 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-06-03 22:08:38 -0400
commit7b57d1d3179b303355eee52b733acc7762a66e67 (patch)
treef58961be3e5da7380b1b39b402e111e7cb5252c2 /gcc
parent107b5ee699ecf5105613e31501040a7b78187774 (diff)
downloadgcc-7b57d1d3179b303355eee52b733acc7762a66e67.zip
gcc-7b57d1d3179b303355eee52b733acc7762a66e67.tar.gz
gcc-7b57d1d3179b303355eee52b733acc7762a66e67.tar.bz2
(attach_deaths): Don't add a REG_DEAD note if a REG_UNUSED note is
already present. From-SVN: r9871
Diffstat (limited to 'gcc')
-rw-r--r--gcc/sched.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/sched.c b/gcc/sched.c
index 9733228..ccd8b56 100644
--- a/gcc/sched.c
+++ b/gcc/sched.c
@@ -2864,7 +2864,12 @@ attach_deaths (x, insn, set_p)
#endif
&& regno != STACK_POINTER_REGNUM)
{
- if (! all_needed && ! dead_or_set_p (insn, x))
+ /* ??? It is perhaps a dead_or_set_p bug that it does
+ not check for REG_UNUSED notes itself. This is necessary
+ for the case where the SET_DEST is a subreg of regno, as
+ dead_or_set_p handles subregs specially. */
+ if (! all_needed && ! dead_or_set_p (insn, x)
+ && ! find_regno_note (insn, REG_UNUSED, regno))
{
/* Check for the case where the register dying partially
overlaps the register set by this insn. */