src/share/vm/opto/phaseX.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/phaseX.cpp

src/share/vm/opto/phaseX.cpp

Print this page
rev 8049 : castpp gcm
rev 10220 : 8148786: xml.tranform fails on x86-64
Summary: CCP computes wrong type for CountedLoop iv Phi
Reviewed-by:

*** 1712,1721 **** --- 1712,1738 ---- worklist.push(p); // Propagate change to user } } } } + // If n is used in a counted loop exit condition then the type + // of the counted loop's Phi depends on the type of n. See + // PhiNode::Value(). + if (m_op == Op_CmpI) { + if (m->outcnt() > 0) { + Node* bol = m->raw_out(0); + if (bol->outcnt() > 0) { + Node* iff = bol->raw_out(0); + if (iff->is_CountedLoopEnd()) { + CountedLoopEndNode* cle = iff->as_CountedLoopEnd(); + if (cle->limit() == n && cle->phi() != NULL) { + worklist.push(cle->phi()); + } + } + } + } + } } } } }
src/share/vm/opto/phaseX.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File