Skip to content

Commit

Permalink
Disable commoning dataAddrPointer in createStoresForVar()
Browse files Browse the repository at this point in the history
Addendum to c86da7e

Signed-off-by: midronij <[email protected]>
  • Loading branch information
midronij committed Oct 2, 2024
1 parent 0601b27 commit de2996e
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions compiler/il/OMRNode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3911,13 +3911,25 @@ OMR::Node::createStoresForVar(TR::SymbolReference * &nodeRef, TR::TreeTop *inser
}
else
{
newArrayRef = comp->getSymRefTab()->
createTemporary(comp->getMethodSymbol(), TR::Address);
TR::Node *arrayObjectNode = NULL;
TR::Node *arrayLoadNode = NULL;

TR::Node *newStore = TR::Node::createStore(newArrayRef, child);
if (child->isDataAddrPointer())
arrayObjectNode = child->getFirstChild();

newArrayRef = comp->getSymRefTab()->createTemporary(comp->getMethodSymbol(), TR::Address);
TR::Node *newStore = TR::Node::createStore(newArrayRef, arrayObjectNode ? arrayObjectNode : child);
newStoreTree = TR::TreeTop::create(comp, newStore);

newArrayRef->getSymbol()->setPinningArrayPointer();
pinningArray = newArrayRef->getSymbol()->castToAutoSymbol();

if (child->isDataAddrPointer())
{
arrayLoadNode = TR::Node::createLoad(arrayObjectNode, newArrayRef);
child->setAndIncChild(0, arrayLoadNode);
arrayObjectNode->recursivelyDecReferenceCount();
}
}
}
}
Expand Down

0 comments on commit de2996e

Please sign in to comment.