diff src/share/vm/opto/loopnode.hpp @ 3788:e3cbc9ddd434

7044738: Loop unroll optimization causes incorrect result Summary: take into account memory dependencies when clonning nodes in clone_up_backedge_goo(). Reviewed-by: never
author kvn
date Tue, 28 Jun 2011 15:24:29 -0700
parents 38569792a45a
children 4e761e7e6e12
line wrap: on
line diff
--- a/src/share/vm/opto/loopnode.hpp	Tue Jun 28 15:04:39 2011 -0700
+++ b/src/share/vm/opto/loopnode.hpp	Tue Jun 28 15:24:29 2011 -0700
@@ -843,7 +843,7 @@
   void insert_pre_post_loops( IdealLoopTree *loop, Node_List &old_new, bool peel_only );
   // If Node n lives in the back_ctrl block, we clone a private version of n
   // in preheader_ctrl block and return that, otherwise return n.
-  Node *clone_up_backedge_goo( Node *back_ctrl, Node *preheader_ctrl, Node *n );
+  Node *clone_up_backedge_goo( Node *back_ctrl, Node *preheader_ctrl, Node *n, VectorSet &visited, Node_Stack &clones );
 
   // Take steps to maximally unroll the loop.  Peel any odd iterations, then
   // unroll to do double iterations.  The next round of major loop transforms