summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-29 22:37:37 +0000
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-29 22:37:37 +0000
commit092d65690d3a28d910394a32369fb7c59c7b0fc4 (patch)
treeef257157aab01c935c8e3b0a4b6c492b8ac7b9b1
parent19f8cf12632856375eb78283308e3851153f12a3 (diff)
downloadppe42-gcc-092d65690d3a28d910394a32369fb7c59c7b0fc4.tar.gz
ppe42-gcc-092d65690d3a28d910394a32369fb7c59c7b0fc4.zip
* flow.c (mark_used_reg): If a register is unconditionally live,
remove any conditional death information. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34259 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/flow.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 76bf6411c42..3fc27462251 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-05-29 Richard Earnshaw (rearnsha@arm.com)
+
+ * flow.c (mark_used_reg): If a register is unconditionally live,
+ remove any conditional death information.
+
2000-05-29 Richard Henderson <rth@cygnus.com>
* final.c (current_output_insn): New.
diff --git a/gcc/flow.c b/gcc/flow.c
index 936240d79ce..03e188caa93 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -5120,6 +5120,24 @@ mark_used_reg (pbi, reg, cond, insn)
(splay_tree_value) rcli);
}
}
+ else if (some_was_live)
+ {
+ splay_tree_node node;
+ struct reg_cond_life_info *rcli;
+
+ node = splay_tree_lookup (pbi->reg_cond_dead, regno);
+ if (node != NULL)
+ {
+ /* The register was conditionally live previously, but is now
+ unconditionally so. Remove it from the conditionally dead
+ list, so that a conditional set won't cause us to think
+ it dead. */
+ rcli = (struct reg_cond_life_info *) node->value;
+ rcli->condition = NULL_RTX;
+ splay_tree_remove (pbi->reg_cond_dead, regno);
+ }
+ }
+
#endif
}
OpenPOWER on IntegriCloud