--- a/hotspot/src/share/vm/opto/loopTransform.cpp Thu Jun 16 01:43:11 2016 +0300
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp Mon Jun 20 09:32:44 2016 +0200
@@ -868,7 +868,7 @@
Node *bol = iff->in(1);
if (bol->req() != 2) continue; // dead constant test
if (!bol->is_Bool()) {
- assert(UseLoopPredicate && bol->Opcode() == Op_Conv2B, "predicate check only");
+ assert(bol->Opcode() == Op_Conv2B, "predicate check only");
continue;
}
if (bol->as_Bool()->_test._test == BoolTest::ne)
@@ -1760,14 +1760,6 @@
}
}
-//------------------------------dominates_backedge---------------------------------
-// Returns true if ctrl is executed on every complete iteration
-bool IdealLoopTree::dominates_backedge(Node* ctrl) {
- assert(ctrl->is_CFG(), "must be control");
- Node* backedge = _head->as_Loop()->in(LoopNode::LoopBackControl);
- return _phase->dom_lca_internal(ctrl, backedge) == ctrl;
-}
-
//------------------------------adjust_limit-----------------------------------
// Helper function for add_constraint().
Node* PhaseIdealLoop::adjust_limit(int stride_con, Node * scale, Node *offset, Node *rc_limit, Node *loop_limit, Node *pre_ctrl) {
@@ -2187,10 +2179,8 @@
if( b_test._test == BoolTest::lt ) { // Range checks always use lt
// The underflow and overflow limits: 0 <= scale*I+offset < limit
add_constraint( stride_con, scale_con, offset, zero, limit, pre_ctrl, &pre_limit, &main_limit );
- if (!conditional_rc) {
- // (0-offset)/scale could be outside of loop iterations range.
- conditional_rc = !loop->dominates_backedge(iff);
- }
+ // (0-offset)/scale could be outside of loop iterations range.
+ conditional_rc = true;
} else {
if (PrintOpto) {
tty->print_cr("missed RCE opportunity");
@@ -2221,12 +2211,10 @@
// Note: (MIN_INT+1 == -MAX_INT) is used instead of MIN_INT here
// to avoid problem with scale == -1: MIN_INT/(-1) == MIN_INT.
add_constraint( stride_con, scale_con, offset, mini, limit, pre_ctrl, &pre_limit, &main_limit );
- if (!conditional_rc) {
- // ((MIN_INT+1)-offset)/scale could be outside of loop iterations range.
- // Note: negative offset is replaced with 0 but (MIN_INT+1)/scale could
- // still be outside of loop range.
- conditional_rc = !loop->dominates_backedge(iff);
- }
+ // ((MIN_INT+1)-offset)/scale could be outside of loop iterations range.
+ // Note: negative offset is replaced with 0 but (MIN_INT+1)/scale could
+ // still be outside of loop range.
+ conditional_rc = true;
break;
default:
if (PrintOpto) {