8071302: assert(!_reg_node[reg_lo] || edge_from_to(_reg_node[reg_lo], def)) failed: after block local

Thu, 22 Jan 2015 11:25:23 -0800

author
iveresov
date
Thu, 22 Jan 2015 11:25:23 -0800
changeset 7570
93c6b977591b
parent 7569
4011ee1230e3
child 7571
d9c03a9ead96

8071302: assert(!_reg_node[reg_lo] || edge_from_to(_reg_node[reg_lo], def)) failed: after block local
Summary: Add merge nodes to node to block mapping
Reviewed-by: kvn, vlivanov

src/share/vm/opto/output.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/postaloc.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/opto/output.cpp	Fri Jan 23 15:18:50 2015 -0800
     1.2 +++ b/src/share/vm/opto/output.cpp	Thu Jan 22 11:25:23 2015 -0800
     1.3 @@ -2473,7 +2473,7 @@
     1.4        if( iop == Op_Con ) continue;      // Do not schedule Top
     1.5        if( iop == Op_Node &&     // Do not schedule PhiNodes, ProjNodes
     1.6            mach->pipeline() == MachNode::pipeline_class() &&
     1.7 -          !n->is_SpillCopy() )  // Breakpoints, Prolog, etc
     1.8 +          !n->is_SpillCopy() && !n->is_MachMerge() )  // Breakpoints, Prolog, etc
     1.9          continue;
    1.10        break;                    // Funny loop structure to be sure...
    1.11      }
     2.1 --- a/src/share/vm/opto/postaloc.cpp	Fri Jan 23 15:18:50 2015 -0800
     2.2 +++ b/src/share/vm/opto/postaloc.cpp	Thu Jan 22 11:25:23 2015 -0800
     2.3 @@ -428,6 +428,7 @@
     2.4          // Insert the merge node into the block before the first use.
     2.5          uint use_index = block->find_node(reg2defuse.at(reg).first_use());
     2.6          block->insert_node(merge, use_index++);
     2.7 +        _cfg.map_node_to_block(merge, block);
     2.8  
     2.9          // Let the allocator know about the new node, use the same lrg
    2.10          _lrg_map.extend(merge->_idx, lrg);

mercurial