< prev index next >

src/hotspot/share/opto/superword.cpp

Print this page

        

*** 1335,1344 **** --- 1335,1345 ---- num_s1_uses++; if (!in_bb(t1)) continue; for (DUIterator_Fast jmax, j = s2->fast_outs(jmax); j < jmax; j++) { Node* t2 = s2->fast_out(j); if (!in_bb(t2)) continue; + if (t2->Opcode() == Op_AddI && t2 == _lp->as_CountedLoop()->incr()) continue; // don't mess with the iv if (!opnd_positions_match(s1, t1, s2, t2)) continue; if (stmts_can_pack(t1, t2, align)) { int my_savings = est_savings(t1, t2); if (my_savings > savings) {
*** 3285,3295 **** // the loop entry is inappropriate. if (!PhaseIdealLoop::is_canonical_loop_entry(cl)) { return NULL; } ! Node* p_f = cl->in(LoopNode::EntryControl)->in(0)->in(0); if (!p_f->is_IfFalse()) return NULL; if (!p_f->in(0)->is_CountedLoopEnd()) return NULL; CountedLoopEndNode* pre_end = p_f->in(0)->as_CountedLoopEnd(); CountedLoopNode* loop_node = pre_end->loopnode(); if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL; --- 3286,3296 ---- // the loop entry is inappropriate. if (!PhaseIdealLoop::is_canonical_loop_entry(cl)) { return NULL; } ! Node* p_f = cl->skip_strip_mined()->in(LoopNode::EntryControl)->in(0)->in(0); if (!p_f->is_IfFalse()) return NULL; if (!p_f->in(0)->is_CountedLoopEnd()) return NULL; CountedLoopEndNode* pre_end = p_f->in(0)->as_CountedLoopEnd(); CountedLoopNode* loop_node = pre_end->loopnode(); if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL;
< prev index next >