equal
deleted
inserted
replaced
567 const CmpNode *cmp = bol->in(1)->as_Cmp(); |
567 const CmpNode *cmp = bol->in(1)->as_Cmp(); |
568 if (cmp->Opcode() != Op_CmpU) { |
568 if (cmp->Opcode() != Op_CmpU) { |
569 return false; |
569 return false; |
570 } |
570 } |
571 Node* range = cmp->in(2); |
571 Node* range = cmp->in(2); |
572 if (range->Opcode() != Op_LoadRange) { |
572 if (range->Opcode() != Op_LoadRange && !iff->is_RangeCheck()) { |
573 const TypeInt* tint = phase->_igvn.type(range)->isa_int(); |
573 const TypeInt* tint = phase->_igvn.type(range)->isa_int(); |
574 if (tint == NULL || tint->empty() || tint->_lo < 0) { |
574 if (tint == NULL || tint->empty() || tint->_lo < 0) { |
575 // Allow predication on positive values that aren't LoadRanges. |
575 // Allow predication on positive values that aren't LoadRanges. |
576 // This allows optimization of loops where the length of the |
576 // This allows optimization of loops where the length of the |
577 // array is a known value and doesn't need to be loaded back |
577 // array is a known value and doesn't need to be loaded back |