comparison src/share/vm/opto/postaloc.cpp @ 3941:2209834ccb59

7089632: assert(machtmp->outcnt() == 1) failed: expected for a MachTemp Summary: Replace assert with check to delete MachTemp nodes only when they are really dead. Reviewed-by: never
author kvn
date Tue, 13 Sep 2011 11:46:51 -0700
parents 8f47d8870d9a
children 5da7201222d5
comparison
equal deleted inserted replaced
3940:ab577c97a5f3 3941:2209834ccb59
98 blk_adjust += yank(old, current_block, value, regnd); 98 blk_adjust += yank(old, current_block, value, regnd);
99 99
100 Node *tmp = NULL; 100 Node *tmp = NULL;
101 for (uint i = 1; i < old->req(); i++) { 101 for (uint i = 1; i < old->req(); i++) {
102 if (old->in(i)->is_MachTemp()) { 102 if (old->in(i)->is_MachTemp()) {
103 // handle TEMP inputs
103 Node* machtmp = old->in(i); 104 Node* machtmp = old->in(i);
104 assert(machtmp->outcnt() == 1, "expected for a MachTemp"); 105 if (machtmp->outcnt() == 1) {
105 blk_adjust += yank(machtmp, current_block, value, regnd); 106 assert(machtmp->unique_out() == old, "sanity");
106 machtmp->disconnect_inputs(NULL); 107 blk_adjust += yank(machtmp, current_block, value, regnd);
108 machtmp->disconnect_inputs(NULL);
109 }
107 } else { 110 } else {
108 assert(tmp == NULL, "can't handle more non MachTemp inputs"); 111 assert(tmp == NULL, "can't handle more non MachTemp inputs");
109 tmp = old->in(i); 112 tmp = old->in(i);
110 } 113 }
111 } 114 }