7089632: assert(machtmp->outcnt() == 1) failed: expected for a MachTemp

Tue, 13 Sep 2011 11:46:51 -0700

author
kvn
date
Tue, 13 Sep 2011 11:46:51 -0700
changeset 3140
2209834ccb59
parent 3139
ab577c97a5f3
child 3141
10ee2b297ccd

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

src/share/vm/opto/postaloc.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/opto/postaloc.cpp	Mon Sep 12 13:51:40 2011 -0700
     1.2 +++ b/src/share/vm/opto/postaloc.cpp	Tue Sep 13 11:46:51 2011 -0700
     1.3 @@ -100,10 +100,13 @@
     1.4      Node *tmp = NULL;
     1.5      for (uint i = 1; i < old->req(); i++) {
     1.6        if (old->in(i)->is_MachTemp()) {
     1.7 +        // handle TEMP inputs
     1.8          Node* machtmp = old->in(i);
     1.9 -        assert(machtmp->outcnt() == 1, "expected for a MachTemp");
    1.10 -        blk_adjust += yank(machtmp, current_block, value, regnd);
    1.11 -        machtmp->disconnect_inputs(NULL);
    1.12 +        if (machtmp->outcnt() == 1) {
    1.13 +          assert(machtmp->unique_out() == old, "sanity");
    1.14 +          blk_adjust += yank(machtmp, current_block, value, regnd);
    1.15 +          machtmp->disconnect_inputs(NULL);
    1.16 +        }
    1.17        } else {
    1.18          assert(tmp == NULL, "can't handle more non MachTemp inputs");
    1.19          tmp = old->in(i);

mercurial