From e0cfd188239a25dd883907efc09440f72fa96eb3 Mon Sep 17 00:00:00 2001 From: iveresov Date: Thu, 22 Jan 2015 11:25:23 -0800 Subject: [PATCH] 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 | 2 +- src/share/vm/opto/postaloc.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp index 5a32e38ea..0563ebba5 100644 --- a/src/share/vm/opto/output.cpp +++ b/src/share/vm/opto/output.cpp @@ -2473,7 +2473,7 @@ void Scheduling::DoScheduling() { if( iop == Op_Con ) continue; // Do not schedule Top if( iop == Op_Node && // Do not schedule PhiNodes, ProjNodes mach->pipeline() == MachNode::pipeline_class() && - !n->is_SpillCopy() ) // Breakpoints, Prolog, etc + !n->is_SpillCopy() && !n->is_MachMerge() ) // Breakpoints, Prolog, etc continue; break; // Funny loop structure to be sure... } diff --git a/src/share/vm/opto/postaloc.cpp b/src/share/vm/opto/postaloc.cpp index f24577646..cec4c5dfb 100644 --- a/src/share/vm/opto/postaloc.cpp +++ b/src/share/vm/opto/postaloc.cpp @@ -428,6 +428,7 @@ int PhaseChaitin::possibly_merge_multidef(Node *n, uint k, Block *block, RegToDe // Insert the merge node into the block before the first use. uint use_index = block->find_node(reg2defuse.at(reg).first_use()); block->insert_node(merge, use_index++); + _cfg.map_node_to_block(merge, block); // Let the allocator know about the new node, use the same lrg _lrg_map.extend(merge->_idx, lrg); -- GitLab