summaryrefslogtreecommitdiff
path: root/src/jit/valuenum.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jit/valuenum.cpp')
-rw-r--r--src/jit/valuenum.cpp37
1 files changed, 3 insertions, 34 deletions
diff --git a/src/jit/valuenum.cpp b/src/jit/valuenum.cpp
index 4948be0ddb..2a516fbebc 100644
--- a/src/jit/valuenum.cpp
+++ b/src/jit/valuenum.cpp
@@ -6189,9 +6189,6 @@ void Compiler::fgValueNumberTree(GenTree* tree, bool evalAsgLhsInd)
// If it is a PtrToLoc, lib and cons VNs will be the same.
if (argIsVNFunc)
{
- IndirectAssignmentAnnotation* pIndirAnnot =
- nullptr; // This will be used if "tree" is an "indirect assignment",
- // explained below.
if (funcApp.m_func == VNF_PtrToLoc)
{
assert(arg->gtVNPair.BothEqual()); // If it's a PtrToLoc, lib/cons shouldn't differ.
@@ -6204,11 +6201,9 @@ void Compiler::fgValueNumberTree(GenTree* tree, bool evalAsgLhsInd)
{
FieldSeqNode* fieldSeq = vnStore->FieldSeqVNToFieldSeq(funcApp.m_args[1]);
- // Either "arg" is the address of (part of) a local itself, or the assignment is an
- // "indirect assignment", where an outer comma expression assigned the address of a
- // local to a temp, and that temp is our lhs, and we recorded this in a table when we
- // made the indirect assignment...or else we have a "rogue" PtrToLoc, one that should
- // have made the local in question address-exposed. Assert on that.
+ // Either "arg" is the address of (part of) a local itself, or else we have
+ // a "rogue" PtrToLoc, one that should have made the local in question
+ // address-exposed. Assert on that.
GenTreeLclVarCommon* lclVarTree = nullptr;
bool isEntire = false;
unsigned lclDefSsaNum = SsaConfig::RESERVED_SSA_NUM;
@@ -6246,32 +6241,6 @@ void Compiler::fgValueNumberTree(GenTree* tree, bool evalAsgLhsInd)
}
lvaTable[lclNum].GetPerSsaData(lclDefSsaNum)->m_vnPair = newLhsVNPair;
}
- else if (m_indirAssignMap != nullptr && GetIndirAssignMap()->Lookup(tree, &pIndirAnnot))
- {
- // The local #'s should agree.
- assert(lclNum == pIndirAnnot->m_lclNum);
- assert(pIndirAnnot->m_defSsaNum != SsaConfig::RESERVED_SSA_NUM);
- lclDefSsaNum = pIndirAnnot->m_defSsaNum;
- // Does this assignment write the entire width of the local?
- if (genTypeSize(lhs->TypeGet()) == genTypeSize(var_types(lvaTable[lclNum].lvType)))
- {
- assert(pIndirAnnot->m_useSsaNum == SsaConfig::RESERVED_SSA_NUM);
- assert(pIndirAnnot->m_isEntire);
- newLhsVNPair = rhsVNPair;
- }
- else
- {
- assert(pIndirAnnot->m_useSsaNum != SsaConfig::RESERVED_SSA_NUM);
- assert(!pIndirAnnot->m_isEntire);
- assert(pIndirAnnot->m_fieldSeq == fieldSeq);
- ValueNumPair oldLhsVNPair =
- lvaTable[lclNum].GetPerSsaData(pIndirAnnot->m_useSsaNum)->m_vnPair;
- newLhsVNPair =
- vnStore->VNPairApplySelectorsAssign(oldLhsVNPair, fieldSeq, rhsVNPair,
- lhs->TypeGet(), compCurBB);
- }
- lvaTable[lclNum].GetPerSsaData(lclDefSsaNum)->m_vnPair = newLhsVNPair;
- }
else
{
unreached(); // "Rogue" PtrToLoc, as discussed above.