When AndINode::Ideal construct a new node for AndI (LoadS 0xFFFF), it doesn't preserve original LoadS properties (e.g., ControlDependency, mismatched, unaligned):
if (lop == Op_LoadS && (mask & 0xFFFF0000) == 0 ) {
Node *ldus = new LoadUSNode(load->in(MemNode::Control),
load->in(MemNode::Memory),
load->in(MemNode::Address),
load->adr_type(),
TypeInt::CHAR, MemNode::unordered);
ldus = phase->transform(ldus);
return new AndINode(ldus, phase->intcon(mask & 0xFFFF));
}
if (lop == Op_LoadS && (mask & 0xFFFF0000) == 0 ) {
Node *ldus = new LoadUSNode(load->in(MemNode::Control),
load->in(MemNode::Memory),
load->in(MemNode::Address),
load->adr_type(),
TypeInt::CHAR, MemNode::unordered);
ldus = phase->transform(ldus);
return new AndINode(ldus, phase->intcon(mask & 0xFFFF));
}
- relates to
-
JDK-8152972 C2 crashes with SIGSEGV in LoadNode::make
-
- Closed
-