From 6a3dbe6543fe3d23a1936c3867e9980eec075c15 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Mon, 29 May 2000 22:37:37 +0000 Subject: 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 --- gcc/ChangeLog | 5 +++++ gcc/flow.c | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) 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 * final.c (current_output_insn): New. diff --git a/gcc/flow.c b/gcc/flow.c index 936240d..03e188c 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 } -- cgit v1.1