8307619: C2 failed: Not monotonic (AndI CastII LShiftI) in TestShiftCastAndNotification.java
Reviewed-by: chagedorn, thartmann
This commit is contained in:
parent
eaa80ad08c
commit
b6a9f5c304
@ -1923,13 +1923,15 @@ bool MulNode::AndIL_shift_and_mask_is_always_zero(PhaseGVN* phase, Node* shift,
|
||||
if (mask == nullptr || shift == nullptr) {
|
||||
return false;
|
||||
}
|
||||
const TypeInteger* mask_t = phase->type(mask)->isa_integer(bt);
|
||||
if (mask_t == nullptr || phase->type(shift)->isa_integer(bt) == nullptr) {
|
||||
return false;
|
||||
}
|
||||
shift = shift->uncast();
|
||||
if (shift == nullptr) {
|
||||
return false;
|
||||
}
|
||||
const TypeInteger* mask_t = phase->type(mask)->isa_integer(bt);
|
||||
const TypeInteger* shift_t = phase->type(shift)->isa_integer(bt);
|
||||
if (mask_t == nullptr || shift_t == nullptr) {
|
||||
if (phase->type(shift)->isa_integer(bt) == nullptr) {
|
||||
return false;
|
||||
}
|
||||
BasicType shift_bt = bt;
|
||||
@ -1946,6 +1948,9 @@ bool MulNode::AndIL_shift_and_mask_is_always_zero(PhaseGVN* phase, Node* shift,
|
||||
if (val->Opcode() == Op_LShiftI) {
|
||||
shift_bt = T_INT;
|
||||
shift = val;
|
||||
if (phase->type(shift)->isa_integer(bt) == nullptr) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shift->Opcode() != Op_LShift(shift_bt)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user