--- a/hotspot/src/share/vm/opto/superword.cpp Thu Apr 03 13:33:13 2008 -0700
+++ b/hotspot/src/share/vm/opto/superword.cpp Thu Apr 03 21:26:03 2008 -0700
@@ -65,6 +65,11 @@
Node *cl_exit = cl->loopexit();
if (cl_exit->in(0) != lpt->_head) return;
+ // Make sure the are no extra control users of the loop backedge
+ if (cl->back_control()->outcnt() != 1) {
+ return;
+ }
+
// Check for pre-loop ending with CountedLoopEnd(Bool(Cmp(x,Opaque1(limit))))
CountedLoopEndNode* pre_end = get_pre_loop_end(cl);
if (pre_end == NULL) return;