--- a/hotspot/src/share/vm/opto/loopopts.cpp Mon Jul 13 15:00:22 2009 -0700
+++ b/hotspot/src/share/vm/opto/loopopts.cpp Wed Jul 15 13:37:35 2009 -0700
@@ -346,7 +346,10 @@
// Yes! Reshape address expression!
Node *inv_scale = new (C, 3) LShiftINode( add_invar, scale );
- register_new_node( inv_scale, add_invar_ctrl );
+ Node *inv_scale_ctrl =
+ dom_depth(add_invar_ctrl) > dom_depth(scale_ctrl) ?
+ add_invar_ctrl : scale_ctrl;
+ register_new_node( inv_scale, inv_scale_ctrl );
Node *var_scale = new (C, 3) LShiftINode( add_var, scale );
register_new_node( var_scale, n_ctrl );
Node *var_add = new (C, 3) AddINode( var_scale, inv_scale );