mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 03:54:33 +02:00
Merge
This commit is contained in:
commit
5f132a5ec3
135 changed files with 2294 additions and 1132 deletions
|
@ -599,20 +599,6 @@ Node *AndLNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
|||
Node* in1 = in(1);
|
||||
uint op = in1->Opcode();
|
||||
|
||||
// Masking sign bits off of an integer? Do an unsigned integer to
|
||||
// long load.
|
||||
// NOTE: This check must be *before* we try to convert the AndLNode
|
||||
// to an AndINode and commute it with ConvI2LNode because
|
||||
// 0xFFFFFFFFL masks the whole integer and we get a sign extension,
|
||||
// which is wrong.
|
||||
if (op == Op_ConvI2L && in1->in(1)->Opcode() == Op_LoadI && mask == CONST64(0x00000000FFFFFFFF)) {
|
||||
Node* load = in1->in(1);
|
||||
return new (phase->C) LoadUI2LNode(load->in(MemNode::Control),
|
||||
load->in(MemNode::Memory),
|
||||
load->in(MemNode::Address),
|
||||
load->adr_type());
|
||||
}
|
||||
|
||||
// Are we masking a long that was converted from an int with a mask
|
||||
// that fits in 32-bits? Commute them and use an AndINode. Don't
|
||||
// convert masks which would cause a sign extension of the integer
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue