changeset 22810:f7e9598536c1

8066763: fatal error "assert(false) failed: unexpected yanked node" in postaloc.cpp:139 Summary: Check for dead input nodes after replacing compare node with implicit null check. Reviewed-by: kvn
author thartmann
date Fri, 12 Dec 2014 09:07:54 +0100
parents e0d05cfad544
children 06face256a8c
files src/share/vm/opto/lcm.cpp
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/lcm.cpp	Thu Jan 08 12:45:53 2015 -0800
+++ b/src/share/vm/opto/lcm.cpp	Fri Dec 12 09:07:54 2014 +0100
@@ -437,8 +437,15 @@
   for (DUIterator_Last i2min, i2 = old_tst->last_outs(i2min); i2 >= i2min; --i2)
     old_tst->last_out(i2)->set_req(0, nul_chk);
   // Clean-up any dead code
-  for (uint i3 = 0; i3 < old_tst->req(); i3++)
+  for (uint i3 = 0; i3 < old_tst->req(); i3++) {
+    Node* in = old_tst->in(i3);
     old_tst->set_req(i3, NULL);
+    if (in->outcnt() == 0) {
+      // Remove dead input node
+      in->disconnect_inputs(NULL, C);
+      block->find_remove(in);
+    }
+  }
 
   latency_from_uses(nul_chk);
   latency_from_uses(best);