diff options
| author | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-29 22:37:37 +0000 |
|---|---|---|
| committer | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-29 22:37:37 +0000 |
| commit | 092d65690d3a28d910394a32369fb7c59c7b0fc4 (patch) | |
| tree | ef257157aab01c935c8e3b0a4b6c492b8ac7b9b1 | |
| parent | 19f8cf12632856375eb78283308e3851153f12a3 (diff) | |
| download | ppe42-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/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 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 } |

