diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2000-05-29 22:37:37 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2000-05-29 22:37:37 +0000 |
commit | 6a3dbe6543fe3d23a1936c3867e9980eec075c15 (patch) | |
tree | ef257157aab01c935c8e3b0a4b6c492b8ac7b9b1 | |
parent | b1a9f6a07ab0821c162af840fd626bbb1c7c80ea (diff) | |
download | gcc-6a3dbe6543fe3d23a1936c3867e9980eec075c15.zip gcc-6a3dbe6543fe3d23a1936c3867e9980eec075c15.tar.gz gcc-6a3dbe6543fe3d23a1936c3867e9980eec075c15.tar.bz2 |
flow.c (mark_used_reg): If a register is unconditionally live, remove any conditional death information.
* flow.c (mark_used_reg): If a register is unconditionally live,
remove any conditional death information.
From-SVN: r34259
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/flow.c | 18 |
2 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 76bf641..3fc2746 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. @@ -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 } |