Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove dead code from CopyPropagation and UseDefInfo #7488

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 0 additions & 32 deletions compiler/optimizer/CopyPropagation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1159,9 +1159,7 @@ void TR_CopyPropagation::replaceCopySymbolReferenceByOriginalIn(TR::SymbolRefere
if (node->getOpCode().hasSymbolReference())
{
TR::SymbolReference *symRef = node->getSymbolReference();
#ifndef PROPAGATE_GLOBALS
if (symRef->getReferenceNumber() == copySymbolReference->getReferenceNumber())
#endif
{
if (node->getOpCode().isLoadIndirect())
{
Expand Down Expand Up @@ -1396,13 +1394,11 @@ void TR_CopyPropagation::replaceCopySymbolReferenceByOriginalIn(TR::SymbolRefere
}
}

#ifndef PROPAGATE_GLOBALS
for (int i = 0; i < node->getNumChildren(); i++)
{
TR::Node *child = node->getChild(i);
replaceCopySymbolReferenceByOriginalIn(copySymbolReference, origNode, child, defNode);
}
#endif
}
}

Expand Down Expand Up @@ -1589,21 +1585,11 @@ TR::Node *TR_CopyPropagation::areAllDefsInCorrectForm(TR::Node *useNode, const T

TR::SymbolReference *copySymbolReference = defNode->getSymbolReference();

#ifdef PROPAGATE_GLOBALS
if (!defNode->getOpCode().isStore())
return NULL;
#else
if (!defNode->getOpCode().isStoreDirect())
return NULL;
#endif

#ifdef PROPAGATE_GLOBALS
if (!useDefInfo->isPreciseDef(defNode, useNode))
return NULL;
#else
if (!defNode->getSymbolReference()->getSymbol()->isAutoOrParm())
return NULL;
#endif

if (defNode->getDataType() != useNode->getDataType() ||
defNode->getSize() != useNode->getSize())
Expand Down Expand Up @@ -1927,15 +1913,9 @@ bool TR_CopyPropagation::isCorrectToPropagate(TR::Node *useNode, TR::Node *store
{
return true;
}
#ifdef PROPAGATE_GLOBALS
else if (_lookForOriginalDefs &&
currentNode->getOpCode().isStore() &&
defs.ValueAt(currentNode->getUseDefIndex()-useDefInfo->getFirstDefIndex()))
#else
else if (_lookForOriginalDefs &&
currentNode->getOpCode().isStoreDirect() &&
currentNode->getSymbolReference() == storeNode->getSymbolReference())
#endif
{
return true;
}
Expand Down Expand Up @@ -2014,15 +1994,9 @@ bool TR_CopyPropagation::isRedefinedBetweenStoreTreeAnd(TR::list< TR::Node *> &
visitPredecessors = false;
break;
}
#ifdef PROPAGATE_GLOBALS
else if (_lookForOriginalDefs &&
currentNode->getOpCode().isStore() &&
defs.ValueAt(currentNode->getUseDefIndex()-useDefInfo->getFirstDefIndex()))
#else
else if (_lookForOriginalDefs &&
currentNode->getOpCode().isStoreDirect() &&
currentNode->getSymbolReference() == storeNode->getSymbolReference())
#endif
{
visitPredecessors = false;
break;
Expand Down Expand Up @@ -2091,15 +2065,9 @@ bool TR_CopyPropagation::recursive_isRedefinedBetweenStoreTreeAnd(TR::list< TR::
{
return false;
}
#ifdef PROPAGATE_GLOBALS
else if (_lookForOriginalDefs &&
currentNode->getOpCode().isStore() &&
defs.ValueAt(currentNode->getUseDefIndex()-useDefInfo->getFirstDefIndex()))
#else
else if (_lookForOriginalDefs &&
currentNode->getOpCode().isStoreDirect() &&
currentNode->getSymbolReference() == storeNode->getSymbolReference())
#endif
{
return false;
}
Expand Down
66 changes: 0 additions & 66 deletions compiler/optimizer/UseDefInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -432,58 +432,6 @@ bool TR_UseDefInfo::_runReachingDefinitions(TR_ReachingDefinitions& reachingDefi
return succeeded;
}

void TR_UseDefInfo::setVolatileSymbolsIndexAndRecurse(TR::BitVector &volatileSymbols, int32_t symRefNum)
{
TR::SymbolReference* symRef = comp()->getSymRefTab()->getSymRef(symRefNum);

if (!symRef || !symRef->getSymbol())
return;


if(volatileSymbols[symRef->getReferenceNumber()]) //already set, do not need to recurse.
return;

// traceMsg(comp(), "JIAG, setting volatile Symbols for symref %d.\n",symRefNum);
volatileSymbols[symRefNum] = true;


TR::SparseBitVector aliases(comp()->allocator());
symRef->getUseDefAliases().getAliases(aliases);
symRef->getUseonlyAliases().getAliasesAndUnionWith(aliases);


TR::SparseBitVector::Cursor aliasesCursor(aliases);
for (aliasesCursor.SetToFirstOne(); aliasesCursor.Valid(); aliasesCursor.SetToNextOne())
{
TR::SymbolReference *aliasedSymRef = comp()->getSymRefTab()->getSymRef(aliasesCursor);

if (!aliasedSymRef || !aliasedSymRef->getSymbol())
continue;

setVolatileSymbolsIndexAndRecurse(volatileSymbols,aliasedSymRef->getReferenceNumber());
}
}

void TR_UseDefInfo::findAndPopulateVolatileSymbolsIndex(TR::BitVector &volatileSymbols)
{
// traceMsg(comp(), "In findAndPopulateVolatileSymbolsIndex\n");
for (int32_t symRefNumber = comp()->getSymRefTab()->getIndexOfFirstSymRef(); unsigned(symRefNumber) < comp()->getSymRefCount(); symRefNumber++)
{
// traceMsg(comp(), "Considering symRef %d: ",symRefNumber);
TR::SymbolReference* symRef = comp()->getSymRefTab()->getSymRef(symRefNumber);

if (!symRef || !symRef->getSymbol())
continue;

if (symRef->getSymbol()->isVolatile())
{
// traceMsg(comp(), "it is volatile");
setVolatileSymbolsIndexAndRecurse(volatileSymbols, symRefNumber);
}
// traceMsg(comp(), "\n");
}
}

void TR_UseDefInfo::fillInDataStructures(AuxiliaryData &aux)
{
TR::SymbolReferenceTable *symRefTab = comp()->getSymRefTab();
Expand Down Expand Up @@ -2264,14 +2212,6 @@ void TR_UseDefInfo::dereferenceDef(TR_UseDefInfo::BitVector &useDefInfo, int32_t
}
}


// PLX only
bool TR_UseDefInfo::isChildUse(TR::Node* node, int32_t childIndex)
{
TR_ASSERT(childIndex < node->getNumChildren(), "Bad child index");
return true;
}

void TR_UseDefInfo::buildUseDefs(TR::Node *node, void *vanalysisInfo, TR_BitVector &nodesToBeDereferenced, TR::Node *parent, AuxiliaryData &aux)
{
vcount_t visitCount = comp()->getVisitCount();
Expand Down Expand Up @@ -2658,12 +2598,6 @@ bool TR_UseDefInfo::getUseDef(BitVector &useDef, int32_t useIndex)
return !useDef.IsZero();
}

bool TR_UseDefInfo::getUseDef_noExpansion(BitVector &useDef, int32_t useIndex)
{
useDef.Or(_useDefInfo[useIndex - getFirstUseIndex()]);
return !useDef.IsZero();
}

const TR_UseDefInfo::BitVector &TR_UseDefInfo::getUseDef_ref(int32_t useIndex, TR_UseDefInfo::BitVector *defs)
{
_defsChecklist->empty();
Expand Down
6 changes: 0 additions & 6 deletions compiler/optimizer/UseDefInfo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@ class TR_UseDefInfo

bool getUseDefIsZero(int32_t useIndex);
bool getUseDef(BitVector &useDef, int32_t useIndex);
bool getUseDef_noExpansion(BitVector &useDef, int32_t useIndex);
private:
const BitVector &getUseDef_ref(int32_t useIndex, BitVector *defs = NULL);
const BitVector &getUseDef_ref_body(int32_t useIndex, TR_BitVector *visitedDefs, TR_UseDefInfo::BitVector *defs = NULL);
Expand Down Expand Up @@ -244,9 +243,6 @@ class TR_UseDefInfo
// For Languages where an auto can alias a volatile, extra care needs to be taken when setting up use-def
// The conservative answer is to not index autos that have volatile aliases.

void setVolatileSymbolsIndexAndRecurse(TR::BitVector &volatileSymbols, int32_t symRefNum);
void findAndPopulateVolatileSymbolsIndex(TR::BitVector &volatileSymbols);

bool shouldIndexVolatileSym(TR::SymbolReference *ref, AuxiliaryData &aux);


Expand Down Expand Up @@ -321,8 +317,6 @@ class TR_UseDefInfo
public:
int32_t getNumSymbols() { return _numSymbols; }
int32_t getMemorySymbolIndex (TR::Node *);
bool isPreciseDef(TR::Node *def, TR::Node *use);
bool isChildUse(TR::Node *node, int32_t childIndex);

public:
bool _useDefForRegs;
Expand Down