7199654: Remove LoadUI2LNode

Removed LoadUI2L node from Ideal nodes, use match rule in .ad files instead.

Reviewed-by: kvn
This commit is contained in:
Vladimir Ivanov 2012-10-09 12:40:05 -07:00
parent 61eb5a0549
commit 6674423523
10 changed files with 7 additions and 40 deletions

View file

@ -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