mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
7117282: assert(base == NULL || t_adr->isa_rawptr() || !phase->type(base)
Delay memory node transformation until the memory is processed. Reviewed-by: iveresov, never
This commit is contained in:
parent
e60b163500
commit
78034a3d3b
1 changed files with 7 additions and 0 deletions
|
@ -265,6 +265,13 @@ Node *MemNode::Ideal_common(PhaseGVN *phase, bool can_reshape) {
|
||||||
if( phase->type( mem ) == Type::TOP ) return NodeSentinel; // caller will return NULL
|
if( phase->type( mem ) == Type::TOP ) return NodeSentinel; // caller will return NULL
|
||||||
assert( mem != this, "dead loop in MemNode::Ideal" );
|
assert( mem != this, "dead loop in MemNode::Ideal" );
|
||||||
|
|
||||||
|
if (can_reshape && igvn != NULL && igvn->_worklist.member(mem)) {
|
||||||
|
// This memory slice may be dead.
|
||||||
|
// Delay this mem node transformation until the memory is processed.
|
||||||
|
phase->is_IterGVN()->_worklist.push(this);
|
||||||
|
return NodeSentinel; // caller will return NULL
|
||||||
|
}
|
||||||
|
|
||||||
Node *address = in(MemNode::Address);
|
Node *address = in(MemNode::Address);
|
||||||
const Type *t_adr = phase->type( address );
|
const Type *t_adr = phase->type( address );
|
||||||
if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL
|
if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue