]> gcc.gnu.org Git - gcc.git/commitdiff
flow.c (mark_used_reg): If a register is unconditionally live, remove any conditional...
authorRichard Earnshaw <rearnsha@arm.com>
Mon, 29 May 2000 22:37:37 +0000 (22:37 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Mon, 29 May 2000 22:37:37 +0000 (22:37 +0000)
* flow.c (mark_used_reg): If a register is unconditionally live,
remove any conditional death information.

From-SVN: r34259

gcc/ChangeLog
gcc/flow.c

index 76bf6411c42ee318f33072b3a99755ff5954935e..3fc27462251cb47732ce65835539d2c414071c08 100644 (file)
@@ -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.
index 936240d79ce94b4684378f7bce2cfa60ec6a6a8f..03e188caa936f5cd6c7576c7b1b13511ad3f82c5 100644 (file)
@@ -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
 }
 
This page took 0.091284 seconds and 5 git commands to generate.