aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>1999-12-07 00:24:38 +0000
committerJim Wilson <wilson@gcc.gnu.org>1999-12-06 16:24:38 -0800
commit124d535f9bea46a361fe0b0f2f20dff44b3fb27a (patch)
treebaac4ec7ef354f3179d441355779f0ac96b3279f /gcc
parent402b6c2a7aec8bac15a092efcc9612ae4bc3468a (diff)
downloadgcc-124d535f9bea46a361fe0b0f2f20dff44b3fb27a.zip
gcc-124d535f9bea46a361fe0b0f2f20dff44b3fb27a.tar.gz
gcc-124d535f9bea46a361fe0b0f2f20dff44b3fb27a.tar.bz2
Fix ia64 abort while compiling gcc.c-torture/unsorted/logic.c.
* regmove.c (optimize_reg_copy_1): If no REG_DEAD note, check for and handle REG_UNUSED note on insn. From-SVN: r30813
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/regmove.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 505c799..76b1836 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
Mon Dec 6 15:12:14 1999 Jim Wilson <wilson@cygnus.com>
+ * regmove.c (optimize_reg_copy_1): If no REG_DEAD note, check for
+ and handle REG_UNUSED note on insn.
+
* combine.c (force_to_mode, case LSHIFTRT): New local inner_mask. Set
inner_mask instead of mask.
diff --git a/gcc/regmove.c b/gcc/regmove.c
index b464781..b78ea16 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -528,6 +528,14 @@ optimize_reg_copy_1 (insn, dest, src)
REG_NOTES (insn) = note;
}
+ /* DEST is also dead if INSN has a REG_UNUSED note for DEST. */
+ if (! dest_death
+ && (dest_death = find_regno_note (insn, REG_UNUSED, dregno)))
+ {
+ PUT_REG_NOTE_KIND (dest_death, REG_DEAD);
+ remove_note (insn, dest_death);
+ }
+
/* Put death note of DEST on P if we saw it die. */
if (dest_death)
{