# HG changeset patch # User kvn # Date 1267167523 28800 # Node ID 80fd89e1bd57e5fcaabfc4a0e2148ac53355e739 # Parent b9d96b4469eb8664f7ff0561b8eb36162894cb40 6930116: loop predication code does not handle If nodes with only one projection Summary: Add check for iff->outcnt() < 2. Reviewed-by: never diff -r b9d96b4469eb -r 80fd89e1bd57 hotspot/src/share/vm/opto/loopTransform.cpp --- a/hotspot/src/share/vm/opto/loopTransform.cpp Thu Feb 25 15:55:47 2010 -0800 +++ b/hotspot/src/share/vm/opto/loopTransform.cpp Thu Feb 25 22:58:43 2010 -0800 @@ -1785,6 +1785,8 @@ bool PhaseIdealLoop::is_uncommon_trap_if_pattern(ProjNode *proj, bool must_reason_predicate) { Node *in0 = proj->in(0); if (!in0->is_If()) return false; + // Variation of a dead If node. + if (in0->outcnt() < 2) return false; IfNode* iff = in0->as_If(); // we need "If(Conv2B(Opaque1(...)))" pattern for must_reason_predicate