From 5c8281775859c5a745033648482076f339f12a25 Mon Sep 17 00:00:00 2001 From: Sinan Kaya Date: Sat, 23 Mar 2019 05:22:42 +0000 Subject: [PATCH 1/5] find src/jit -type f -exec sed -i -e 's/gtLclVarCommon\./AsLclVarCommon()\./g' {} \; gtLclVarCommon --- src/jit/assertionprop.cpp | 28 +++++++++---------- src/jit/codegen.h | 2 +- src/jit/codegenarm64.cpp | 6 ++--- src/jit/codegencommon.cpp | 4 +-- src/jit/codegenlinear.cpp | 4 +-- src/jit/codegenxarch.cpp | 8 +++--- src/jit/compiler.cpp | 10 +++---- src/jit/compiler.hpp | 12 ++++----- src/jit/copyprop.cpp | 8 +++--- src/jit/earlyprop.cpp | 2 +- src/jit/flowgraph.cpp | 8 +++--- src/jit/gentree.cpp | 34 +++++++++++------------ src/jit/gschecks.cpp | 4 +-- src/jit/importer.cpp | 50 +++++++++++++++++----------------- src/jit/instr.cpp | 8 +++--- src/jit/lclvars.cpp | 6 ++--- src/jit/liveness.cpp | 6 ++--- src/jit/loopcloning.h | 4 +-- src/jit/lower.cpp | 6 ++--- src/jit/lsra.cpp | 2 +- src/jit/lsra.h | 4 +-- src/jit/morph.cpp | 52 ++++++++++++++++++------------------ src/jit/optcse.cpp | 4 +-- src/jit/optimizer.cpp | 36 ++++++++++++------------- src/jit/simd.cpp | 4 +-- src/jit/simdcodegenxarch.cpp | 10 +++---- src/jit/ssabuilder.cpp | 10 +++---- src/jit/treelifeupdater.cpp | 2 +- src/jit/valuenum.cpp | 6 ++--- 29 files changed, 170 insertions(+), 170 deletions(-) diff --git a/src/jit/assertionprop.cpp b/src/jit/assertionprop.cpp index 2cfc0f0d1a45..6325363ee3af 100644 --- a/src/jit/assertionprop.cpp +++ b/src/jit/assertionprop.cpp @@ -31,7 +31,7 @@ Compiler::fgWalkResult Compiler::optAddCopiesCallback(GenTree** pTree, fgWalkDat GenTree* op1 = tree->AsOp()->gtOp1; Compiler* comp = data->compiler; - if ((op1->gtOper == GT_LCL_VAR) && (op1->gtLclVarCommon.GetLclNum() == comp->optAddCopyLclNum)) + if ((op1->gtOper == GT_LCL_VAR) && (op1->AsLclVarCommon()->GetLclNum() == comp->optAddCopyLclNum)) { comp->optAddCopyAsgnNode = tree; return WALK_ABORT; @@ -450,7 +450,7 @@ void Compiler::optAddCopies() GenTree* op1 = tree->AsOp()->gtOp1; noway_assert(tree && op1 && tree->OperIs(GT_ASG) && (op1->gtOper == GT_LCL_VAR) && - (op1->gtLclVarCommon.GetLclNum() == lclNum)); + (op1->AsLclVarCommon()->GetLclNum() == lclNum)); /* Assign the old expression into the new temp */ @@ -886,7 +886,7 @@ AssertionIndex Compiler::optCreateAssertion(GenTree* op1, goto DONE_ASSERTION; // Don't make an assertion } - unsigned lclNum = op1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op1->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); LclVarDsc* lclVar = &lvaTable[lclNum]; @@ -965,7 +965,7 @@ AssertionIndex Compiler::optCreateAssertion(GenTree* op1, // else if (op1->gtOper == GT_LCL_VAR) { - unsigned lclNum = op1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op1->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); LclVarDsc* lclVar = &lvaTable[lclNum]; @@ -1138,7 +1138,7 @@ AssertionIndex Compiler::optCreateAssertion(GenTree* op1, goto DONE_ASSERTION; // Don't make an assertion } - unsigned lclNum2 = op2->gtLclVarCommon.GetLclNum(); + unsigned lclNum2 = op2->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum2 < lvaCount); LclVarDsc* lclVar2 = &lvaTable[lclNum2]; @@ -1278,7 +1278,7 @@ AssertionIndex Compiler::optCreateAssertion(GenTree* op1, // if (op1->gtOper == GT_LCL_VAR) { - unsigned lclNum = op1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op1->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); // If the local variable is not in SSA then bail @@ -2593,7 +2593,7 @@ GenTree* Compiler::optConstantAssertionProp(AssertionDsc* curAssertion, GenTree* tree, Statement* stmt DEBUGARG(AssertionIndex index)) { - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); if (lclNumIsCSE(lclNum)) { @@ -2787,7 +2787,7 @@ GenTree* Compiler::optCopyAssertionProp(AssertionDsc* curAssertion, noway_assert(op1.lcl.lclNum != op2.lcl.lclNum); - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); // Make sure one of the lclNum of the assertion matches with that of the tree. if (op1.lcl.lclNum != lclNum && op2.lcl.lclNum != lclNum) @@ -2825,8 +2825,8 @@ GenTree* Compiler::optCopyAssertionProp(AssertionDsc* curAssertion, return nullptr; } - tree->gtLclVarCommon.SetSsaNum(copySsaNum); - tree->gtLclVarCommon.SetLclNum(copyLclNum); + tree->AsLclVarCommon()->SetSsaNum(copySsaNum); + tree->AsLclVarCommon()->SetLclNum(copyLclNum); #ifdef DEBUG if (verbose) @@ -2900,8 +2900,8 @@ GenTree* Compiler::optAssertionProp_LclVar(ASSERT_VALARG_TP assertions, GenTree* // gtFoldExpr, specifically the case of a cast, where the fold operation changes the type of the LclVar // node. In such a case is not safe to perform the substitution since later on the JIT will assert mismatching // types between trees. - else if (curAssertion->op1.lcl.lclNum == tree->gtLclVarCommon.GetLclNum() && - tree->gtType == lvaTable[tree->gtLclVarCommon.GetLclNum()].lvType) + else if (curAssertion->op1.lcl.lclNum == tree->AsLclVarCommon()->GetLclNum() && + tree->gtType == lvaTable[tree->AsLclVarCommon()->GetLclNum()].lvType) { // If local assertion prop just, perform constant prop. if (optLocalAssertionProp) @@ -3326,7 +3326,7 @@ GenTree* Compiler::optAssertionPropLocal_RelOp(ASSERT_VALARG_TP assertions, GenT } // Find an equal or not equal assertion about op1 var. - unsigned lclNum = op1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op1->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); AssertionIndex index = optLocalAssertionIsEqualOrNotEqual(op1Kind, lclNum, op2Kind, cnsVal, assertions); @@ -3425,7 +3425,7 @@ GenTree* Compiler::optAssertionProp_Cast(ASSERT_VALARG_TP assertions, GenTree* t AssertionIndex index = optAssertionIsSubrange(lcl, fromType, toType, assertions); if (index != NO_ASSERTION_INDEX) { - LclVarDsc* varDsc = &lvaTable[lcl->gtLclVarCommon.GetLclNum()]; + LclVarDsc* varDsc = &lvaTable[lcl->AsLclVarCommon()->GetLclNum()]; if (varDsc->lvNormalizeOnLoad() || varTypeIsLong(varDsc->TypeGet())) { // For normalize on load variables it must be a narrowing cast to remove diff --git a/src/jit/codegen.h b/src/jit/codegen.h index 80068150dcc6..8557deb839ae 100644 --- a/src/jit/codegen.h +++ b/src/jit/codegen.h @@ -1232,7 +1232,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX { return false; } - const LclVarDsc* varDsc = &compiler->lvaTable[tree->gtLclVarCommon.GetLclNum()]; + const LclVarDsc* varDsc = &compiler->lvaTable[tree->AsLclVarCommon()->GetLclNum()]; return (varDsc->lvIsRegCandidate()); } diff --git a/src/jit/codegenarm64.cpp b/src/jit/codegenarm64.cpp index e651f8b9e9ad..1f875d9509c6 100644 --- a/src/jit/codegenarm64.cpp +++ b/src/jit/codegenarm64.cpp @@ -4598,7 +4598,7 @@ void CodeGen::genSIMDIntrinsicGetItem(GenTreeSIMD* simdNode) if (op1->OperIsLocal()) { - unsigned varNum = op1->gtLclVarCommon.GetLclNum(); + unsigned varNum = op1->AsLclVarCommon()->GetLclNum(); GetEmitter()->emitIns_R_S(ins, emitActualTypeSize(baseType), targetReg, varNum, offset); } @@ -4657,7 +4657,7 @@ void CodeGen::genSIMDIntrinsicGetItem(GenTreeSIMD* simdNode) assert(!op1->isUsedFromReg()); if (op1->OperIsLocal()) { - unsigned varNum = op1->gtLclVarCommon.GetLclNum(); + unsigned varNum = op1->AsLclVarCommon()->GetLclNum(); baseReg = simdNode->ExtractTempReg(); @@ -4969,7 +4969,7 @@ void CodeGen::genStoreLclTypeSIMD12(GenTree* treeNode) assert((treeNode->OperGet() == GT_STORE_LCL_FLD) || (treeNode->OperGet() == GT_STORE_LCL_VAR)); unsigned offs = 0; - unsigned varNum = treeNode->gtLclVarCommon.GetLclNum(); + unsigned varNum = treeNode->AsLclVarCommon()->GetLclNum(); assert(varNum < compiler->lvaCount); if (treeNode->OperGet() == GT_STORE_LCL_FLD) diff --git a/src/jit/codegencommon.cpp b/src/jit/codegencommon.cpp index 034eedc3d969..5adf83dc49c0 100644 --- a/src/jit/codegencommon.cpp +++ b/src/jit/codegencommon.cpp @@ -457,7 +457,7 @@ regMaskTP CodeGenInterface::genGetRegMask(GenTree* tree) assert(tree->gtOper == GT_LCL_VAR); regMaskTP regMask = RBM_NONE; - const LclVarDsc* varDsc = compiler->lvaTable + tree->gtLclVarCommon.GetLclNum(); + const LclVarDsc* varDsc = compiler->lvaTable + tree->AsLclVarCommon()->GetLclNum(); if (varDsc->lvPromoted) { for (unsigned i = varDsc->lvFieldLclStart; i < varDsc->lvFieldLclStart + varDsc->lvFieldCnt; ++i) @@ -1142,7 +1142,7 @@ unsigned CodeGenInterface::InferStructOpSizeAlign(GenTree* op, unsigned* alignme } else if (op->gtOper == GT_LCL_VAR) { - unsigned varNum = op->gtLclVarCommon.GetLclNum(); + unsigned varNum = op->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = compiler->lvaTable + varNum; assert(varDsc->lvType == TYP_STRUCT); opSize = varDsc->lvSize(); diff --git a/src/jit/codegenlinear.cpp b/src/jit/codegenlinear.cpp index b83b0e56cdce..531d156c4ab6 100644 --- a/src/jit/codegenlinear.cpp +++ b/src/jit/codegenlinear.cpp @@ -807,7 +807,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX void CodeGen::genSpillVar(GenTree* tree) { - unsigned varNum = tree->gtLclVarCommon.GetLclNum(); + unsigned varNum = tree->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &(compiler->lvaTable[varNum]); assert(varDsc->lvIsRegCandidate()); @@ -1850,7 +1850,7 @@ void CodeGen::genProduceReg(GenTree* tree) { // Store local variable to its home location. // Ensure that lclVar stores are typed correctly. - unsigned varNum = tree->gtLclVarCommon.GetLclNum(); + unsigned varNum = tree->AsLclVarCommon()->GetLclNum(); assert(!compiler->lvaTable[varNum].lvNormalizeOnStore() || (tree->TypeGet() == genActualType(compiler->lvaTable[varNum].TypeGet()))); inst_TT_RV(ins_Store(tree->gtType, compiler->isSIMDTypeLocalAligned(varNum)), tree, tree->GetRegNum()); diff --git a/src/jit/codegenxarch.cpp b/src/jit/codegenxarch.cpp index b834d942ae8d..7658c92c1f08 100644 --- a/src/jit/codegenxarch.cpp +++ b/src/jit/codegenxarch.cpp @@ -1360,12 +1360,12 @@ void CodeGen::genFloatReturn(GenTree* treeNode) GenTree* op1 = treeNode->gtGetOp1(); // Spill the return value register from an XMM register to the stack, then load it on the x87 stack. // If it already has a home location, use that. Otherwise, we need a temp. - if (genIsRegCandidateLocal(op1) && compiler->lvaTable[op1->gtLclVarCommon.GetLclNum()].lvOnFrame) + if (genIsRegCandidateLocal(op1) && compiler->lvaTable[op1->AsLclVarCommon()->GetLclNum()].lvOnFrame) { - if (compiler->lvaTable[op1->gtLclVarCommon.GetLclNum()].GetRegNum() != REG_STK) + if (compiler->lvaTable[op1->AsLclVarCommon()->GetLclNum()].GetRegNum() != REG_STK) { op1->gtFlags |= GTF_SPILL; - inst_TT_RV(ins_Store(op1->gtType, compiler->isSIMDTypeLocalAligned(op1->gtLclVarCommon.GetLclNum())), op1, + inst_TT_RV(ins_Store(op1->gtType, compiler->isSIMDTypeLocalAligned(op1->AsLclVarCommon()->GetLclNum())), op1, op1->GetRegNum()); } // Now, load it to the fp stack. @@ -3017,7 +3017,7 @@ void CodeGen::genCodeForLoadOffset(instruction ins, emitAttr size, regNumber dst { offset += baseNode->AsLclFld()->gtLclOffs; } - emit->emitIns_R_S(ins, size, dst, baseNode->gtLclVarCommon.GetLclNum(), offset); + emit->emitIns_R_S(ins, size, dst, baseNode->AsLclVarCommon()->GetLclNum(), offset); } else { diff --git a/src/jit/compiler.cpp b/src/jit/compiler.cpp index 9673ef50882b..6c1a39ef0069 100644 --- a/src/jit/compiler.cpp +++ b/src/jit/compiler.cpp @@ -9573,16 +9573,16 @@ int cSsaNumIR(Compiler* comp, GenTree* tree) { int chars = 0; - if (tree->gtLclVarCommon.HasSsaName()) + if (tree->AsLclVarCommon()->HasSsaName()) { if (tree->gtFlags & GTF_VAR_USEASG) { assert(tree->gtFlags & GTF_VAR_DEF); - chars += printf("", tree->gtLclVarCommon.GetSsaNum(), comp->GetSsaNumForLocalVarDef(tree)); + chars += printf("", tree->AsLclVarCommon()->GetSsaNum(), comp->GetSsaNumForLocalVarDef(tree)); } else { - chars += printf("<%s:%d>", (tree->gtFlags & GTF_VAR_DEF) ? "d" : "u", tree->gtLclVarCommon.GetSsaNum()); + chars += printf("<%s:%d>", (tree->gtFlags & GTF_VAR_DEF) ? "d" : "u", tree->AsLclVarCommon()->GetSsaNum()); } } @@ -9683,7 +9683,7 @@ int cLeafIR(Compiler* comp, GenTree* tree) case GT_LCL_VAR: case GT_LCL_VAR_ADDR: case GT_STORE_LCL_VAR: - lclNum = tree->gtLclVarCommon.GetLclNum(); + lclNum = tree->AsLclVarCommon()->GetLclNum(); comp->gtGetLclVarNameInfo(lclNum, &ilKind, &ilName, &ilNum); if (ilName != nullptr) { @@ -9747,7 +9747,7 @@ int cLeafIR(Compiler* comp, GenTree* tree) case GT_LCL_FLD_ADDR: case GT_STORE_LCL_FLD: - lclNum = tree->gtLclVarCommon.GetLclNum(); + lclNum = tree->AsLclVarCommon()->GetLclNum(); comp->gtGetLclVarNameInfo(lclNum, &ilKind, &ilName, &ilNum); if (ilName != nullptr) { diff --git a/src/jit/compiler.hpp b/src/jit/compiler.hpp index 67f9fa91b755..764207ce0455 100644 --- a/src/jit/compiler.hpp +++ b/src/jit/compiler.hpp @@ -1186,7 +1186,7 @@ inline GenTree* Compiler::gtNewFieldRef(var_types typ, CORINFO_FIELD_HANDLE fldH if (obj != nullptr && obj->OperGet() == GT_ADDR && varTypeIsStruct(obj->AsOp()->gtOp1) && obj->AsOp()->gtOp1->OperGet() == GT_LCL_VAR) { - unsigned lclNum = obj->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = obj->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); lvaTable[lclNum].lvFieldAccessed = 1; #if defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) // These structs are passed by reference; we should probably be able to treat these @@ -1852,7 +1852,7 @@ inline VARSET_VALRET_TP Compiler::lvaStmtLclMask(Statement* stmt) continue; } - varNum = tree->gtLclVarCommon.GetLclNum(); + varNum = tree->AsLclVarCommon()->GetLclNum(); assert(varNum < lvaCount); varDsc = lvaTable + varNum; @@ -3351,7 +3351,7 @@ inline void Compiler::LoopDsc::VERIFY_lpIterTree() inline unsigned Compiler::LoopDsc::lpIterVar() { VERIFY_lpIterTree(); - return lpIterTree->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + return lpIterTree->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); } //----------------------------------------------------------------------------- @@ -3488,7 +3488,7 @@ inline unsigned Compiler::LoopDsc::lpVarLimit() GenTree* limit = lpLimit(); assert(limit->OperGet() == GT_LCL_VAR); - return limit->gtLclVarCommon.GetLclNum(); + return limit->AsLclVarCommon()->GetLclNum(); } //----------------------------------------------------------------------------- @@ -3504,7 +3504,7 @@ inline bool Compiler::LoopDsc::lpArrLenLimit(Compiler* comp, ArrIndex* index) // Check if we have a.length or a[i][j].length if (limit->AsArrLen()->ArrRef()->gtOper == GT_LCL_VAR) { - index->arrLcl = limit->AsArrLen()->ArrRef()->gtLclVarCommon.GetLclNum(); + index->arrLcl = limit->AsArrLen()->ArrRef()->AsLclVarCommon()->GetLclNum(); index->rank = 0; return true; } @@ -3838,7 +3838,7 @@ inline bool Compiler::impIsThis(GenTree* obj) else { return ((obj != nullptr) && (obj->gtOper == GT_LCL_VAR) && - lvaIsOriginalThisArg(obj->gtLclVarCommon.GetLclNum())); + lvaIsOriginalThisArg(obj->AsLclVarCommon()->GetLclNum())); } } diff --git a/src/jit/copyprop.cpp b/src/jit/copyprop.cpp index ee7627a0b265..29ebbb61ae40 100644 --- a/src/jit/copyprop.cpp +++ b/src/jit/copyprop.cpp @@ -37,7 +37,7 @@ void Compiler::optBlockCopyPropPopStacks(BasicBlock* block, LclNumToGenTreePtrSt { continue; } - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); if (!lvaInSsa(lclNum)) { continue; @@ -277,7 +277,7 @@ void Compiler::optCopyProp(BasicBlock* block, Statement* stmt, GenTree* tree, Lc } #endif - tree->gtLclVarCommon.SetLclNum(newLclNum); + tree->AsLclVarCommon()->SetLclNum(newLclNum); tree->AsLclVarCommon()->SetSsaNum(newSsaNum); gtUpdateSideEffects(stmt, tree); #ifdef DEBUG @@ -354,7 +354,7 @@ void Compiler::optBlockCopyProp(BasicBlock* block, LclNumToGenTreePtrStack* curS // if (optIsSsaLocal(tree) && (tree->gtFlags & GTF_VAR_DEF)) { - VarSetOps::AddElemD(this, optCopyPropKillSet, lvaTable[tree->gtLclVarCommon.GetLclNum()].lvVarIndex); + VarSetOps::AddElemD(this, optCopyPropKillSet, lvaTable[tree->AsLclVarCommon()->GetLclNum()].lvVarIndex); } } @@ -366,7 +366,7 @@ void Compiler::optBlockCopyProp(BasicBlock* block, LclNumToGenTreePtrStack* curS continue; } - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); // As we encounter a definition add it to the stack as a live definition. if (tree->gtFlags & GTF_VAR_DEF) diff --git a/src/jit/earlyprop.cpp b/src/jit/earlyprop.cpp index 9b8e197da9f6..802c4a60d939 100644 --- a/src/jit/earlyprop.cpp +++ b/src/jit/earlyprop.cpp @@ -573,7 +573,7 @@ void Compiler::optFoldNullCheck(GenTree* tree) { GenTree* additionNode = defRHS->gtGetOp2(); if ((additionNode->gtGetOp1()->OperGet() == GT_LCL_VAR) && - (additionNode->gtGetOp1()->gtLclVarCommon.GetLclNum() == nullCheckLclNum)) + (additionNode->gtGetOp1()->AsLclVarCommon()->GetLclNum() == nullCheckLclNum)) { GenTree* offset = additionNode->gtGetOp2(); if (offset->IsCnsIntOrI()) diff --git a/src/jit/flowgraph.cpp b/src/jit/flowgraph.cpp index c7d3e7aed348..704dd8423035 100644 --- a/src/jit/flowgraph.cpp +++ b/src/jit/flowgraph.cpp @@ -7651,7 +7651,7 @@ GenTree* Compiler::fgDoNormalizeOnStore(GenTree* tree) // Small-typed arguments and aliased locals are normalized on load. // Other small-typed locals are normalized on store. // If it is an assignment to one of the latter, insert the cast on RHS - unsigned varNum = op1->gtLclVarCommon.GetLclNum(); + unsigned varNum = op1->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &lvaTable[varNum]; if (varDsc->lvNormalizeOnStore()) @@ -9857,7 +9857,7 @@ VARSET_VALRET_TP Compiler::fgGetVarBits(GenTree* tree) assert(tree->gtOper == GT_LCL_VAR || tree->gtOper == GT_LCL_FLD); - unsigned int lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned int lclNum = tree->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = lvaTable + lclNum; if (varDsc->lvTracked) { @@ -22293,7 +22293,7 @@ void Compiler::fgAttachStructInlineeToAsg(GenTree* tree, GenTree* child, CORINFO // If it is a multireg return on x64/ux, the local variable should be marked as lvIsMultiRegRet if (child->AsCall()->HasMultiRegRetVal()) { - unsigned lclNum = tree->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); lvaTable[lclNum].lvIsMultiRegRet = true; } return; @@ -22626,7 +22626,7 @@ Compiler::fgWalkResult Compiler::fgLateDevirtualization(GenTree** pTree, fgWalkD if ((lhs->OperGet() == GT_LCL_VAR) && (lhs->TypeGet() == TYP_REF)) { - const unsigned lclNum = lhs->gtLclVarCommon.GetLclNum(); + const unsigned lclNum = lhs->AsLclVarCommon()->GetLclNum(); LclVarDsc* lcl = comp->lvaGetDesc(lclNum); if (lcl->lvSingleDef) diff --git a/src/jit/gentree.cpp b/src/jit/gentree.cpp index 883a8b861de9..91f6e2addaeb 100644 --- a/src/jit/gentree.cpp +++ b/src/jit/gentree.cpp @@ -1315,7 +1315,7 @@ bool GenTree::Compare(GenTree* op1, GenTree* op2, bool swapOK) switch (oper) { case GT_LCL_VAR: - if (op1->gtLclVarCommon.GetLclNum() != op2->gtLclVarCommon.GetLclNum()) + if (op1->AsLclVarCommon()->GetLclNum() != op2->AsLclVarCommon()->GetLclNum()) { break; } @@ -1634,7 +1634,7 @@ bool Compiler::gtHasRef(GenTree* tree, ssize_t lclNum, bool defOnly) { if (oper == GT_LCL_VAR) { - if (tree->gtLclVarCommon.GetLclNum() == (unsigned)lclNum) + if (tree->AsLclVarCommon()->GetLclNum() == (unsigned)lclNum) { if (!defOnly) { @@ -1678,7 +1678,7 @@ bool Compiler::gtHasRef(GenTree* tree, ssize_t lclNum, bool defOnly) // 'tree' is the gtOp1 of an assignment node. So we can handle // the case where defOnly is either true or false. - if (tree->gtOper == GT_LCL_VAR && tree->gtLclVarCommon.GetLclNum() == (unsigned)lclNum) + if (tree->gtOper == GT_LCL_VAR && tree->AsLclVarCommon()->GetLclNum() == (unsigned)lclNum) { return true; } @@ -1884,7 +1884,7 @@ Compiler::fgWalkResult Compiler::gtHasLocalsWithAddrOpCB(GenTree** pTree, fgWalk if (tree->gtOper == GT_LCL_VAR) { - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &comp->lvaTable[lclNum]; if (varDsc->lvHasLdAddrOp || varDsc->lvAddrExposed) @@ -6666,7 +6666,7 @@ void Compiler::gtBlockOpInit(GenTree* result, GenTree* dst, GenTree* srcOrFillVa } if (currSrc->OperGet() == GT_LCL_VAR && currDst->OperGet() == GT_LCL_VAR && - currSrc->gtLclVarCommon.GetLclNum() == currDst->gtLclVarCommon.GetLclNum()) + currSrc->AsLclVarCommon()->GetLclNum() == currDst->AsLclVarCommon()->GetLclNum()) { // Make this a NOP // TODO-Cleanup: probably doesn't matter, but could do this earlier and avoid creating a GT_ASG @@ -6943,7 +6943,7 @@ GenTree* Compiler::gtClone(GenTree* tree, bool complexOK) // on 'copy' as well. tree->gtFlags |= GTF_VAR_CLONED; copy = - gtNewLclvNode(tree->gtLclVarCommon.GetLclNum(), tree->gtType DEBUGARG(tree->AsLclVar()->gtLclILoffs)); + gtNewLclvNode(tree->AsLclVarCommon()->GetLclNum(), tree->gtType DEBUGARG(tree->AsLclVar()->gtLclILoffs)); break; case GT_LCL_FLD: @@ -7115,7 +7115,7 @@ GenTree* Compiler::gtCloneExpr( case GT_LCL_VAR: - if (tree->gtLclVarCommon.GetLclNum() == varNum) + if (tree->AsLclVarCommon()->GetLclNum() == varNum) { copy = gtNewIconNode(varVal, tree->gtType); if (tree->gtFlags & GTF_VAR_ARR_INDEX) @@ -8095,7 +8095,7 @@ bool Compiler::gtCompareTree(GenTree* op1, GenTree* op2) break; case GT_LCL_VAR: - if (op1->gtLclVarCommon.GetLclNum() == op2->gtLclVarCommon.GetLclNum()) + if (op1->AsLclVarCommon()->GetLclNum() == op2->AsLclVarCommon()->GetLclNum()) { return true; } @@ -9987,7 +9987,7 @@ void Compiler::gtDispNode(GenTree* tree, IndentStack* indentStack, __in __in_z _ printf(" %-6s", varTypeName(tree->TypeGet())); if (tree->gtOper == GT_LCL_VAR || tree->gtOper == GT_STORE_LCL_VAR) { - LclVarDsc* varDsc = &lvaTable[tree->gtLclVarCommon.GetLclNum()]; + LclVarDsc* varDsc = &lvaTable[tree->AsLclVarCommon()->GetLclNum()]; if (varDsc->lvAddrExposed) { printf("(AX)"); // Variable has address exposed. @@ -10559,19 +10559,19 @@ void Compiler::gtDispLeaf(GenTree* tree, IndentStack* indentStack) case GT_LCL_VAR_ADDR: case GT_STORE_LCL_VAR: printf(" "); - varNum = tree->gtLclVarCommon.GetLclNum(); + varNum = tree->AsLclVarCommon()->GetLclNum(); varDsc = &lvaTable[varNum]; gtDispLclVar(varNum); - if (tree->gtLclVarCommon.HasSsaName()) + if (tree->AsLclVarCommon()->HasSsaName()) { if (tree->gtFlags & GTF_VAR_USEASG) { assert(tree->gtFlags & GTF_VAR_DEF); - printf("ud:%d->%d", tree->gtLclVarCommon.GetSsaNum(), GetSsaNumForLocalVarDef(tree)); + printf("ud:%d->%d", tree->AsLclVarCommon()->GetSsaNum(), GetSsaNumForLocalVarDef(tree)); } else { - printf("%s:%d", (tree->gtFlags & GTF_VAR_DEF) ? "d" : "u", tree->gtLclVarCommon.GetSsaNum()); + printf("%s:%d", (tree->gtFlags & GTF_VAR_DEF) ? "d" : "u", tree->AsLclVarCommon()->GetSsaNum()); } } @@ -10624,7 +10624,7 @@ void Compiler::gtDispLeaf(GenTree* tree, IndentStack* indentStack) printf(" "); printIndent(indentStack); printf(" %-6s V%02u.%s (offs=0x%02x) -> ", varTypeName(fieldVarDsc->TypeGet()), - tree->gtLclVarCommon.GetLclNum(), fieldName, fieldVarDsc->lvFldOffset); + tree->AsLclVarCommon()->GetLclNum(), fieldName, fieldVarDsc->lvFldOffset); gtDispLclVar(i); if (fieldVarDsc->lvRegister) @@ -12995,7 +12995,7 @@ GenTree* Compiler::gtTryRemoveBoxUpstreamEffects(GenTree* op, BoxRemovalOptions } GenTree* copyDstAddrOp1 = copyDstAddr->AsOp()->gtOp1; - if ((copyDstAddrOp1->OperGet() != GT_LCL_VAR) || (copyDstAddrOp1->gtLclVarCommon.GetLclNum() != boxTempLcl)) + if ((copyDstAddrOp1->OperGet() != GT_LCL_VAR) || (copyDstAddrOp1->AsLclVarCommon()->GetLclNum() != boxTempLcl)) { JITDUMP("Unexpected copy dest address 1st addend\n"); return nullptr; @@ -14755,7 +14755,7 @@ GenTree* Compiler::gtNewTempAssign( unsigned tmp, GenTree* val, Statement** pAfterStmt, IL_OFFSETX ilOffset, BasicBlock* block) { // Self-assignment is a nop. - if (val->OperGet() == GT_LCL_VAR && val->gtLclVarCommon.GetLclNum() == tmp) + if (val->OperGet() == GT_LCL_VAR && val->AsLclVarCommon()->GetLclNum() == tmp) { return gtNewNothingNode(); } @@ -15721,7 +15721,7 @@ bool GenTree::IsPhiDefn() bool GenTree::IsPartialLclFld(Compiler* comp) { return ((gtOper == GT_LCL_FLD) && - (comp->lvaTable[this->gtLclVarCommon.GetLclNum()].lvExactSize != genTypeSize(gtType))); + (comp->lvaTable[this->AsLclVarCommon()->GetLclNum()].lvExactSize != genTypeSize(gtType))); } bool GenTree::DefinesLocal(Compiler* comp, GenTreeLclVarCommon** pLclVarTree, bool* pIsEntire) diff --git a/src/jit/gschecks.cpp b/src/jit/gschecks.cpp index e96b8fdae468..20ed03a39b00 100644 --- a/src/jit/gschecks.cpp +++ b/src/jit/gschecks.cpp @@ -136,7 +136,7 @@ Compiler::fgWalkResult Compiler::gsMarkPtrsAndAssignGroups(GenTree** pTree, fgWa // local vars and param uses case GT_LCL_VAR: case GT_LCL_FLD: - lclNum = tree->gtLclVarCommon.GetLclNum(); + lclNum = tree->AsLclVarCommon()->GetLclNum(); if (pState->isUnderIndir) { @@ -258,7 +258,7 @@ Compiler::fgWalkResult Compiler::gsMarkPtrsAndAssignGroups(GenTree** pTree, fgWa if ((isLocVar || isLocFld) && tree->AsOp()->gtOp2) { - lclNum = tree->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + lclNum = tree->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); newState.lvAssignDef = lclNum; newState.isAssignSrc = true; } diff --git a/src/jit/importer.cpp b/src/jit/importer.cpp index 75ac92ef6905..9d511060817b 100644 --- a/src/jit/importer.cpp +++ b/src/jit/importer.cpp @@ -511,7 +511,7 @@ inline void Compiler::impAppendStmtCheck(Statement* stmt, unsigned chkLevel) if (tree->AsOp()->gtOp1->gtOper == GT_LCL_VAR) { - unsigned lclNum = tree->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); for (unsigned level = 0; level < chkLevel; level++) { assert(!gtHasRef(verCurrentState.esStack[level].val, lclNum, false)); @@ -1122,7 +1122,7 @@ GenTree* Compiler::impAssignStruct(GenTree* dest, // Return a NOP if this is a self-assignment. if (dest->OperGet() == GT_LCL_VAR && src->OperGet() == GT_LCL_VAR && - src->gtLclVarCommon.GetLclNum() == dest->gtLclVarCommon.GetLclNum()) + src->AsLclVarCommon()->GetLclNum() == dest->AsLclVarCommon()->GetLclNum()) { return gtNewNothingNode(); } @@ -1240,13 +1240,13 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr, // TODO-1stClassStructs: Eliminate this pessimization when we can more generally // handle multireg returns. lcl->gtFlags |= GTF_DONT_CSE; - lvaTable[lcl->gtLclVarCommon.GetLclNum()].lvIsMultiRegRet = true; + lvaTable[lcl->AsLclVarCommon()->GetLclNum()].lvIsMultiRegRet = true; } else if (lcl->gtType != src->gtType) { // We change this to a GT_LCL_FLD (from a GT_ADDR of a GT_LCL_VAR) lcl->ChangeOper(GT_LCL_FLD); - fgLclFldAssign(lcl->gtLclVarCommon.GetLclNum()); + fgLclFldAssign(lcl->AsLclVarCommon()->GetLclNum()); lcl->gtType = src->gtType; asgType = src->gtType; } @@ -1256,7 +1256,7 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr, #if defined(_TARGET_ARM_) // TODO-Cleanup: This should have been taken care of in the above HasMultiRegRetVal() case, // but that method has not been updadted to include ARM. - impMarkLclDstNotPromotable(lcl->gtLclVarCommon.GetLclNum(), src, structHnd); + impMarkLclDstNotPromotable(lcl->AsLclVarCommon()->GetLclNum(), src, structHnd); lcl->gtFlags |= GTF_DONT_CSE; #elif defined(UNIX_AMD64_ABI) // Not allowed for FEATURE_CORCLR which is the only SKU available for System V OSs. @@ -1268,7 +1268,7 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr, // TODO-Cleanup: Why is this needed here? This seems that it will set this even for // non-multireg returns. lcl->gtFlags |= GTF_DONT_CSE; - lvaTable[lcl->gtLclVarCommon.GetLclNum()].lvIsMultiRegRet = true; + lvaTable[lcl->AsLclVarCommon()->GetLclNum()].lvIsMultiRegRet = true; #endif } else // we don't have a GT_ADDR of a GT_LCL_VAR @@ -2160,7 +2160,7 @@ GenTree* Compiler::impRuntimeLookupToTree(CORINFO_RESOLVED_TOKEN* pResolvedToken unsigned tmp; if (handleCopy->IsLocal()) { - tmp = handleCopy->gtLclVarCommon.GetLclNum(); + tmp = handleCopy->AsLclVarCommon()->GetLclNum(); } else { @@ -2329,7 +2329,7 @@ void Compiler::impSpillStackEnsure(bool spillLeaves) // Temps introduced by the importer itself don't need to be spilled - bool isTempLcl = (tree->OperGet() == GT_LCL_VAR) && (tree->gtLclVarCommon.GetLclNum() >= info.compLocalsCount); + bool isTempLcl = (tree->OperGet() == GT_LCL_VAR) && (tree->AsLclVarCommon()->GetLclNum() >= info.compLocalsCount); if (isTempLcl) { @@ -2533,7 +2533,7 @@ BasicBlock* Compiler::impPushCatchArgOnStack(BasicBlock* hndBlk, CORINFO_CLASS_H if ((tree->gtOper == GT_ASG) && (tree->AsOp()->gtOp1->gtOper == GT_LCL_VAR) && (tree->AsOp()->gtOp2->gtOper == GT_CATCH_ARG)) { - tree = gtNewLclvNode(tree->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(), TYP_REF); + tree = gtNewLclvNode(tree->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(), TYP_REF); impPushOnStack(tree, typeInfo(TI_REF, clsHnd)); @@ -3076,7 +3076,7 @@ GenTree* Compiler::impInitializeArrayIntrinsic(CORINFO_SIG_INFO* sig) GenTree* arrayAssignment = impLastStmt->GetRootNode(); if ((arrayAssignment->gtOper != GT_ASG) || (arrayAssignment->AsOp()->gtOp1->gtOper != GT_LCL_VAR) || (arrayLocalNode->gtOper != GT_LCL_VAR) || - (arrayAssignment->AsOp()->gtOp1->gtLclVarCommon.GetLclNum() != arrayLocalNode->gtLclVarCommon.GetLclNum())) + (arrayAssignment->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != arrayLocalNode->AsLclVarCommon()->GetLclNum())) { return nullptr; } @@ -6537,7 +6537,7 @@ GenTreeCall* Compiler::impImportIndirectCall(CORINFO_SIG_INFO* sig, IL_OFFSETX i if (fptr->OperGet() == GT_LCL_VAR) { - lvaTable[fptr->gtLclVarCommon.GetLclNum()].lvKeepType = 1; + lvaTable[fptr->AsLclVarCommon()->GetLclNum()].lvKeepType = 1; } #endif @@ -8316,7 +8316,7 @@ var_types Compiler::impImportCall(OPCODE opcode, { assert(newobjThis->gtOper == GT_ADDR && newobjThis->AsOp()->gtOp1->gtOper == GT_LCL_VAR); - unsigned tmp = newobjThis->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + unsigned tmp = newobjThis->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); impPushOnStack(gtNewLclvNode(tmp, lvaGetRealType(tmp)), verMakeTypeInfo(clsHnd).NormaliseForStack()); } else @@ -8331,7 +8331,7 @@ var_types Compiler::impImportCall(OPCODE opcode, } assert(newobjThis->gtOper == GT_LCL_VAR); - impPushOnStack(gtNewLclvNode(newobjThis->gtLclVarCommon.GetLclNum(), TYP_REF), + impPushOnStack(gtNewLclvNode(newobjThis->AsLclVarCommon()->GetLclNum(), TYP_REF), typeInfo(TI_REF, clsHnd)); } } @@ -8965,7 +8965,7 @@ GenTree* Compiler::impFixupStructReturnType(GenTree* op, CORINFO_CLASS_HANDLE re if (op->gtOper == GT_LCL_VAR) { // Make sure that this struct stays in memory and doesn't get promoted. - unsigned lclNum = op->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op->AsLclVarCommon()->GetLclNum(); lvaTable[lclNum].lvIsMultiRegRet = true; // TODO-1stClassStructs: Handle constant propagation and CSE-ing of multireg returns. @@ -8992,7 +8992,7 @@ GenTree* Compiler::impFixupStructReturnType(GenTree* op, CORINFO_CLASS_HANDLE re if (op->gtOper == GT_LCL_VAR) { // This LCL_VAR is an HFA return value, it stays as a TYP_STRUCT - unsigned lclNum = op->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op->AsLclVarCommon()->GetLclNum(); // Make sure this struct type stays as struct so that we can return it as an HFA lvaTable[lclNum].lvIsMultiRegRet = true; @@ -9027,7 +9027,7 @@ GenTree* Compiler::impFixupStructReturnType(GenTree* op, CORINFO_CLASS_HANDLE re if (op->gtOper == GT_LCL_VAR) { // This LCL_VAR stays as a TYP_STRUCT - unsigned lclNum = op->gtLclVarCommon.GetLclNum(); + unsigned lclNum = op->AsLclVarCommon()->GetLclNum(); if (!lvaIsImplicitByRefLocal(lclNum)) { @@ -11140,7 +11140,7 @@ void Compiler::impImportBlockCode(BasicBlock* block) /* Filter out simple assignments to itself */ - if (op1->gtOper == GT_LCL_VAR && lclNum == op1->gtLclVarCommon.GetLclNum()) + if (op1->gtOper == GT_LCL_VAR && lclNum == op1->AsLclVarCommon()->GetLclNum()) { if (opts.compDbgCode) { @@ -16435,7 +16435,7 @@ bool Compiler::impReturnInstruction(BasicBlock* block, int prefixFlags, OPCODE& // Some other block(s) have seen the CEE_RET first. // Better they spilled to the same temp. assert(impInlineInfo->retExpr->gtOper == GT_LCL_VAR); - assert(impInlineInfo->retExpr->gtLclVarCommon.GetLclNum() == op2->gtLclVarCommon.GetLclNum()); + assert(impInlineInfo->retExpr->AsLclVarCommon()->GetLclNum() == op2->AsLclVarCommon()->GetLclNum()); } #endif } @@ -17687,7 +17687,7 @@ void Compiler::impRetypeEntryStateTemps(BasicBlock* blk) GenTree* tree = es->esStack[level].val; if ((tree->gtOper == GT_LCL_VAR) || (tree->gtOper == GT_LCL_FLD)) { - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); LclVarDsc* varDsc = lvaTable + lclNum; es->esStack[level].val->gtType = varDsc->TypeGet(); @@ -18940,8 +18940,8 @@ void Compiler::impInlineInitVars(InlineInfo* pInlineInfo) /* Narrowing cast */ if (inlArgNode->gtOper == GT_LCL_VAR && - !lvaTable[inlArgNode->gtLclVarCommon.GetLclNum()].lvNormalizeOnLoad() && - sigType == lvaGetRealType(inlArgNode->gtLclVarCommon.GetLclNum())) + !lvaTable[inlArgNode->AsLclVarCommon()->GetLclNum()].lvNormalizeOnLoad() && + sigType == lvaGetRealType(inlArgNode->AsLclVarCommon()->GetLclNum())) { /* We don't need to insert a cast here as the variable was assigned a normalized value of the right type */ @@ -19236,7 +19236,7 @@ GenTree* Compiler::impInlineFetchArg(unsigned lclNum, InlArgInfo* inlArgInfo, In // // Use the caller-supplied node if this is the first use. op1 = argInfo.argNode; - argInfo.argTmpNum = op1->gtLclVarCommon.GetLclNum(); + argInfo.argTmpNum = op1->AsLclVarCommon()->GetLclNum(); // Use an equivalent copy if this is the second or subsequent // use, or if we need to retype. @@ -19250,13 +19250,13 @@ GenTree* Compiler::impInlineFetchArg(unsigned lclNum, InlArgInfo* inlArgInfo, In var_types newTyp = lclTyp; - if (!lvaTable[op1->gtLclVarCommon.GetLclNum()].lvNormalizeOnLoad()) + if (!lvaTable[op1->AsLclVarCommon()->GetLclNum()].lvNormalizeOnLoad()) { newTyp = genActualType(lclTyp); } // Create a new lcl var node - remember the argument lclNum - op1 = gtNewLclvNode(op1->gtLclVarCommon.GetLclNum(), newTyp DEBUGARG(op1->AsLclVar()->gtLclILoffs)); + op1 = gtNewLclvNode(op1->AsLclVarCommon()->GetLclNum(), newTyp DEBUGARG(op1->AsLclVar()->gtLclILoffs)); } } else if (argInfo.argIsByRefToStructLocal && !argInfo.argHasStargOp) @@ -19403,7 +19403,7 @@ GenTree* Compiler::impInlineFetchArg(unsigned lclNum, InlArgInfo* inlArgInfo, In BOOL Compiler::impInlineIsThis(GenTree* tree, InlArgInfo* inlArgInfo) { assert(compIsForInlining()); - return (tree->gtOper == GT_LCL_VAR && tree->gtLclVarCommon.GetLclNum() == inlArgInfo[0].argTmpNum); + return (tree->gtOper == GT_LCL_VAR && tree->AsLclVarCommon()->GetLclNum() == inlArgInfo[0].argTmpNum); } //----------------------------------------------------------------------------- diff --git a/src/jit/instr.cpp b/src/jit/instr.cpp index ed25e533d339..a0d1bd3b9fea 100644 --- a/src/jit/instr.cpp +++ b/src/jit/instr.cpp @@ -480,7 +480,7 @@ void CodeGen::inst_set_SV_var(GenTree* tree) { #ifdef DEBUG assert(tree && (tree->gtOper == GT_LCL_VAR || tree->gtOper == GT_LCL_VAR_ADDR || tree->gtOper == GT_STORE_LCL_VAR)); - assert(tree->gtLclVarCommon.GetLclNum() < compiler->lvaCount); + assert(tree->AsLclVarCommon()->GetLclNum() < compiler->lvaCount); GetEmitter()->emitVarRefOffs = tree->AsLclVar()->gtLclILoffs; @@ -588,7 +588,7 @@ void CodeGen::inst_TT(instruction ins, GenTree* tree, unsigned offs, int shfv, e goto LCL; LCL: - varNum = tree->gtLclVarCommon.GetLclNum(); + varNum = tree->AsLclVarCommon()->GetLclNum(); assert(varNum < compiler->lvaCount); if (shfv) @@ -696,7 +696,7 @@ void CodeGen::inst_TT_RV(instruction ins, GenTree* tree, regNumber reg, unsigned LCL: - varNum = tree->gtLclVarCommon.GetLclNum(); + varNum = tree->AsLclVarCommon()->GetLclNum(); assert(varNum < compiler->lvaCount); #if CPU_LOAD_STORE_ARCH @@ -844,7 +844,7 @@ void CodeGen::inst_RV_TT(instruction ins, goto LCL; LCL: - varNum = tree->gtLclVarCommon.GetLclNum(); + varNum = tree->AsLclVarCommon()->GetLclNum(); assert(varNum < compiler->lvaCount); #ifdef _TARGET_ARM_ diff --git a/src/jit/lclvars.cpp b/src/jit/lclvars.cpp index 4486dd18a5c5..24f1e9fe7525 100644 --- a/src/jit/lclvars.cpp +++ b/src/jit/lclvars.cpp @@ -3596,7 +3596,7 @@ void Compiler::lvaMarkLclRefs(GenTree* tree, BasicBlock* block, Statement* stmt, NOT_BOOL: - lclNum = op1->gtLclVarCommon.GetLclNum(); + lclNum = op1->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); lvaTable[lclNum].lvIsBoolean = false; @@ -3615,7 +3615,7 @@ void Compiler::lvaMarkLclRefs(GenTree* tree, BasicBlock* block, Statement* stmt, /* This must be a local variable reference */ assert((tree->gtOper == GT_LCL_VAR) || (tree->gtOper == GT_LCL_FLD)); - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); LclVarDsc* varDsc = lvaTable + lclNum; @@ -7256,7 +7256,7 @@ Compiler::fgWalkResult Compiler::lvaStressLclFldCB(GenTree** pTree, fgWalkData* Compiler* pComp = ((lvaStressLclFldArgs*)data->pCallbackData)->m_pCompiler; bool bFirstPass = ((lvaStressLclFldArgs*)data->pCallbackData)->m_bFirstPass; noway_assert(lcl->gtOper == GT_LCL_VAR); - unsigned lclNum = lcl->gtLclVarCommon.GetLclNum(); + unsigned lclNum = lcl->AsLclVarCommon()->GetLclNum(); var_types type = lcl->TypeGet(); LclVarDsc* varDsc = &pComp->lvaTable[lclNum]; diff --git a/src/jit/liveness.cpp b/src/jit/liveness.cpp index 541ed9bbc1b0..9ef685d48588 100644 --- a/src/jit/liveness.cpp +++ b/src/jit/liveness.cpp @@ -1470,7 +1470,7 @@ VARSET_VALRET_TP Compiler::fgUpdateLiveSet(VARSET_VALARG_TP liveSet, GenTree* tr // fgGetHandlerLiveVars(compCurBB), but seems excessive // assert(VarSetOps::IsEmptyIntersection(this, newLiveSet, varBits) || opts.compDbgCode || - lvaTable[tree->gtLclVarCommon.GetLclNum()].lvAddrExposed || + lvaTable[tree->AsLclVarCommon()->GetLclNum()].lvAddrExposed || (compCurBB != nullptr && ehBlockHasExnFlowDsc(compCurBB))); VarSetOps::UnionD(this, newLiveSet, varBits); } @@ -1756,7 +1756,7 @@ void Compiler::fgComputeLifeUntrackedLocal(VARSET_TP& life, // `true` if the local var node corresponds to a dead store; `false` otherwise. bool Compiler::fgComputeLifeLocal(VARSET_TP& life, VARSET_VALARG_TP keepAliveVars, GenTree* lclVarNode) { - unsigned lclNum = lclVarNode->gtLclVarCommon.GetLclNum(); + unsigned lclNum = lclVarNode->AsLclVarCommon()->GetLclNum(); assert(lclNum < lvaCount); LclVarDsc& varDsc = lvaTable[lclNum]; @@ -1815,7 +1815,7 @@ void Compiler::fgComputeLife(VARSET_TP& life, bool isDeadStore = fgComputeLifeLocal(life, keepAliveVars, tree); if (isDeadStore) { - LclVarDsc* varDsc = &lvaTable[tree->gtLclVarCommon.GetLclNum()]; + LclVarDsc* varDsc = &lvaTable[tree->AsLclVarCommon()->GetLclNum()]; bool doAgain = false; if (fgRemoveDeadStore(&tree, varDsc, life, &doAgain, pStmtInfoDirty DEBUGARG(treeModf))) diff --git a/src/jit/loopcloning.h b/src/jit/loopcloning.h index 8edfce5669bf..7dac794e80e6 100644 --- a/src/jit/loopcloning.h +++ b/src/jit/loopcloning.h @@ -194,9 +194,9 @@ struct LcMdArrayOptInfo : public LcOptInfo index->rank = arrElem->gtArrRank; for (unsigned i = 0; i < dim; ++i) { - index->indLcls.Push(arrElem->gtArrInds[i]->gtLclVarCommon.GetLclNum()); + index->indLcls.Push(arrElem->gtArrInds[i]->AsLclVarCommon()->GetLclNum()); } - index->arrLcl = arrElem->gtArrObj->gtLclVarCommon.GetLclNum(); + index->arrLcl = arrElem->gtArrObj->AsLclVarCommon()->GetLclNum(); } return index; } diff --git a/src/jit/lower.cpp b/src/jit/lower.cpp index 4ccbcee60dd3..a797c9752bba 100644 --- a/src/jit/lower.cpp +++ b/src/jit/lower.cpp @@ -506,7 +506,7 @@ GenTree* Lowering::LowerSwitch(GenTree* node) assert(node->gtOper == GT_SWITCH); GenTree* temp = node->AsOp()->gtOp1; assert(temp->gtOper == GT_LCL_VAR); - unsigned tempLclNum = temp->gtLclVarCommon.GetLclNum(); + unsigned tempLclNum = temp->AsLclVarCommon()->GetLclNum(); var_types tempLclType = temp->TypeGet(); BasicBlock* defaultBB = jumpTab[jumpCnt - 1]; @@ -4055,7 +4055,7 @@ GenTree* Lowering::LowerVirtualVtableCall(GenTreeCall* call) unsigned lclNum; if (thisPtr->IsLocal()) { - lclNum = thisPtr->gtLclVarCommon.GetLclNum(); + lclNum = thisPtr->AsLclVarCommon()->GetLclNum(); } else { @@ -5620,7 +5620,7 @@ bool Lowering::NodesAreEquivalentLeaves(GenTree* tree1, GenTree* tree2) tree1->IsIconHandle() == tree2->IsIconHandle(); case GT_LCL_VAR: case GT_LCL_VAR_ADDR: - return tree1->gtLclVarCommon.GetLclNum() == tree2->gtLclVarCommon.GetLclNum(); + return tree1->AsLclVarCommon()->GetLclNum() == tree2->AsLclVarCommon()->GetLclNum(); case GT_CLS_VAR_ADDR: return tree1->AsClsVar()->gtClsVarHnd == tree2->AsClsVar()->gtClsVarHnd; default: diff --git a/src/jit/lsra.cpp b/src/jit/lsra.cpp index 87e126a03c84..56eb64525234 100644 --- a/src/jit/lsra.cpp +++ b/src/jit/lsra.cpp @@ -9169,7 +9169,7 @@ void LinearScan::lsraDispNode(GenTree* tree, LsraTupleDumpMode mode, bool hasDes unsigned varNum = UINT_MAX; if (tree->IsLocal()) { - varNum = tree->gtLclVarCommon.GetLclNum(); + varNum = tree->AsLclVarCommon()->GetLclNum(); varDsc = &(compiler->lvaTable[varNum]); if (varDsc->lvLRACandidate) { diff --git a/src/jit/lsra.h b/src/jit/lsra.h index bf61f6030e08..19fbf979f144 100644 --- a/src/jit/lsra.h +++ b/src/jit/lsra.h @@ -1016,9 +1016,9 @@ class LinearScan : public LinearScanInterface { if (tree->IsLocal()) { - unsigned int lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned int lclNum = tree->AsLclVarCommon()->GetLclNum(); assert(lclNum < compiler->lvaCount); - LclVarDsc* varDsc = compiler->lvaTable + tree->gtLclVarCommon.GetLclNum(); + LclVarDsc* varDsc = compiler->lvaTable + tree->AsLclVarCommon()->GetLclNum(); return isCandidateVar(varDsc); } diff --git a/src/jit/morph.cpp b/src/jit/morph.cpp index 40e7151070d2..fce0953a3bb4 100644 --- a/src/jit/morph.cpp +++ b/src/jit/morph.cpp @@ -558,7 +558,7 @@ GenTree* Compiler::fgMorphCast(GenTree* tree) if (oper->OperGet() == GT_LCL_VAR && varTypeIsSmall(dstType)) { - unsigned varNum = oper->gtLclVarCommon.GetLclNum(); + unsigned varNum = oper->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &lvaTable[varNum]; if (varDsc->TypeGet() == dstType && varDsc->lvNormalizeOnStore()) { @@ -3727,7 +3727,7 @@ GenTreeCall* Compiler::fgMorphArgs(GenTreeCall* call) assert(argEntry->structDesc.passedInRegisters); if (lclVar != nullptr) { - if (lvaGetPromotionType(lclVar->gtLclVarCommon.GetLclNum()) == PROMOTION_TYPE_INDEPENDENT) + if (lvaGetPromotionType(lclVar->AsLclVarCommon()->GetLclNum()) == PROMOTION_TYPE_INDEPENDENT) { copyBlkClass = objClass; } @@ -3760,7 +3760,7 @@ GenTreeCall* Compiler::fgMorphArgs(GenTreeCall* call) #ifdef _TARGET_ARM_ // TODO-1stClassStructs: Unify these conditions across targets. if (((lclVar != nullptr) && - (lvaGetPromotionType(lclVar->gtLclVarCommon.GetLclNum()) == PROMOTION_TYPE_INDEPENDENT)) || + (lvaGetPromotionType(lclVar->AsLclVarCommon()->GetLclNum()) == PROMOTION_TYPE_INDEPENDENT)) || ((argObj->OperIs(GT_OBJ)) && (passingSize != structSize))) { copyBlkClass = objClass; @@ -3816,7 +3816,7 @@ GenTreeCall* Compiler::fgMorphArgs(GenTreeCall* call) } if (argObj->gtOper == GT_LCL_VAR) { - unsigned lclNum = argObj->gtLclVarCommon.GetLclNum(); + unsigned lclNum = argObj->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &lvaTable[lclNum]; if (varDsc->lvPromoted) @@ -3828,7 +3828,7 @@ GenTreeCall* Compiler::fgMorphArgs(GenTreeCall* call) if (genTypeSize(fieldVarDsc->TypeGet()) >= originalSize) { // we will use the first and only promoted field - argObj->gtLclVarCommon.SetLclNum(varDsc->lvFieldLclStart); + argObj->AsLclVarCommon()->SetLclNum(varDsc->lvFieldLclStart); if (varTypeIsEnregisterable(fieldVarDsc->TypeGet()) && (genTypeSize(fieldVarDsc->TypeGet()) == originalSize)) @@ -5802,7 +5802,7 @@ GenTree* Compiler::fgMorphLocalVar(GenTree* tree, bool forceRemorph) { assert(tree->gtOper == GT_LCL_VAR); - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); var_types varType = lvaGetRealType(lclNum); LclVarDsc* varDsc = &lvaTable[lclNum]; @@ -6062,7 +6062,7 @@ GenTree* Compiler::fgMorphField(GenTree* tree, MorphAddrContext* mac) bool addExplicitNullCheck = false; // Implicit byref locals are never null. - if (!((objRef->gtOper == GT_LCL_VAR) && lvaIsImplicitByRefLocal(objRef->gtLclVarCommon.GetLclNum()))) + if (!((objRef->gtOper == GT_LCL_VAR) && lvaIsImplicitByRefLocal(objRef->AsLclVarCommon()->GetLclNum()))) { // If the objRef is a GT_ADDR node, it, itself, never requires null checking. The expression // whose address is being taken is either a local or static variable, whose address is necessarily @@ -6123,7 +6123,7 @@ GenTree* Compiler::fgMorphField(GenTree* tree, MorphAddrContext* mac) } else { - lclNum = objRef->gtLclVarCommon.GetLclNum(); + lclNum = objRef->AsLclVarCommon()->GetLclNum(); } // Create the "nullchk" node. @@ -6994,7 +6994,7 @@ GenTree* Compiler::fgMorphPotentialTailCall(GenTreeCall* call) { noway_assert(call->TypeGet() == TYP_VOID); GenTree* retValBuf = call->gtCallArgs->GetNode(); - if (retValBuf->gtOper != GT_LCL_VAR || retValBuf->gtLclVarCommon.GetLclNum() != info.compRetBuffArg) + if (retValBuf->gtOper != GT_LCL_VAR || retValBuf->AsLclVarCommon()->GetLclNum() != info.compRetBuffArg) { failTailCall("Need to copy return buffer"); return nullptr; @@ -8895,7 +8895,7 @@ GenTree* Compiler::fgMorphOneAsgBlockOp(GenTree* tree) { // The source argument of the copyblk can potentially be accessed only through indir(addr(lclVar)) // or indir(lclVarAddr) so it must be on the stack. - unsigned lclVarNum = srcLclVarTree->gtLclVarCommon.GetLclNum(); + unsigned lclVarNum = srcLclVarTree->AsLclVarCommon()->GetLclNum(); lvaSetVarDoNotEnregister(lclVarNum DEBUGARG(DNER_BlockOp)); GenTree* srcAddr; if (src == srcLclVarTree) @@ -10256,7 +10256,7 @@ GenTree* Compiler::fgMorphCopyBlock(GenTree* tree) // We will *not* consider this to define the local, but rather have each individual field assign // be a definition. addrSpill->AsOp()->gtOp1->gtFlags &= ~(GTF_LIVENESS_MASK); - assert(lvaGetPromotionType(addrSpill->AsOp()->gtOp1->gtLclVarCommon.GetLclNum()) != + assert(lvaGetPromotionType(addrSpill->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum()) != PROMOTION_TYPE_INDEPENDENT); addrSpillIsStackDest = true; // addrSpill represents the address of LclVar[varNum] in our // local stack frame @@ -10295,7 +10295,7 @@ GenTree* Compiler::fgMorphCopyBlock(GenTree* tree) GenTree* addrOp = addrSpill->AsOp()->gtOp1; if (addrOp->IsLocal()) { - unsigned lclVarNum = addrOp->gtLclVarCommon.GetLclNum(); + unsigned lclVarNum = addrOp->AsLclVarCommon()->GetLclNum(); lvaTable[lclVarNum].lvAddrExposed = true; lvaSetVarDoNotEnregister(lclVarNum DEBUGARG(DNER_AddrExposed)); } @@ -10722,7 +10722,7 @@ GenTree* Compiler::getSIMDStructFromField(GenTree* tree, if (isSIMDTypeLocal(obj)) { - unsigned lclNum = obj->gtLclVarCommon.GetLclNum(); + unsigned lclNum = obj->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &lvaTable[lclNum]; if (varDsc->lvIsUsedInSIMDIntrinsic() || ignoreUsedInSIMDIntrinsic) { @@ -11955,7 +11955,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) // When we introduce the CSE we remove the GT_IND and subsitute a GT_LCL_VAR in it place. else if (op2->OperIsCompare() && (op2->gtType == TYP_BYTE) && (op1->gtOper == GT_LCL_VAR)) { - unsigned varNum = op1->gtLclVarCommon.GetLclNum(); + unsigned varNum = op1->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &lvaTable[varNum]; /* We again need to zero extend the setcc instruction */ @@ -12115,7 +12115,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) goto SKIP; } - unsigned lclNum = lcl->gtLclVarCommon.GetLclNum(); + unsigned lclNum = lcl->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); /* If the LCL_VAR is not a temp then bail, a temp has a single def */ @@ -12140,7 +12140,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) } /* Both of the LCL_VAR must match */ - if (asg->AsOp()->gtOp1->gtLclVarCommon.GetLclNum() != lclNum) + if (asg->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lclNum) { goto SKIP; } @@ -12868,7 +12868,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) } else if (temp->OperIsLocal()) { - unsigned lclNum = temp->gtLclVarCommon.GetLclNum(); + unsigned lclNum = temp->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = &lvaTable[lclNum]; // We will try to optimize when we have a promoted struct promoted with a zero lvFldOffset @@ -12888,7 +12888,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) if (fieldVarDsc->TypeGet() == typ && (fieldVarDsc->lvFldOffset == 0)) { // We can just use the existing promoted field LclNum - temp->gtLclVarCommon.SetLclNum(lclNumFld); + temp->AsLclVarCommon()->SetLclNum(lclNumFld); temp->gtType = fieldVarDsc->TypeGet(); foldAndReturnTemp = true; @@ -12986,7 +12986,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) } // The emitter can get confused by invalid offsets - if (ival1 >= Compiler::lvaLclSize(temp->gtLclVarCommon.GetLclNum())) + if (ival1 >= Compiler::lvaLclSize(temp->AsLclVarCommon()->GetLclNum())) { break; } @@ -16881,7 +16881,7 @@ void Compiler::fgMorphStructField(GenTree* tree, GenTree* parent) if ((obj != nullptr) && (obj->gtOper == GT_LCL_VAR)) { - unsigned lclNum = obj->gtLclVarCommon.GetLclNum(); + unsigned lclNum = obj->AsLclVarCommon()->GetLclNum(); const LclVarDsc* varDsc = &lvaTable[lclNum]; if (varTypeIsStruct(obj)) @@ -16938,7 +16938,7 @@ void Compiler::fgMorphStructField(GenTree* tree, GenTree* parent) } tree->SetOper(GT_LCL_VAR); - tree->gtLclVarCommon.SetLclNum(fieldLclIndex); + tree->AsLclVarCommon()->SetLclNum(fieldLclIndex); tree->gtType = fieldType; tree->gtFlags &= GTF_NODE_MASK; tree->gtFlags &= ~GTF_GLOB_REF; @@ -17012,7 +17012,7 @@ void Compiler::fgMorphStructField(GenTree* tree, GenTree* parent) if (tree->TypeGet() == obj->TypeGet()) { tree->ChangeOper(GT_LCL_VAR); - tree->gtLclVarCommon.SetLclNum(lclNum); + tree->AsLclVarCommon()->SetLclNum(lclNum); tree->gtFlags &= GTF_NODE_MASK; if ((parent->gtOper == GT_ASG) && (parent->AsOp()->gtOp1 == tree)) @@ -17070,7 +17070,7 @@ void Compiler::fgMorphLocalField(GenTree* tree, GenTree* parent) (varTypeIsEnregisterable(fieldType) || varTypeIsSIMD(fieldType))); tree->ChangeOper(GT_LCL_VAR); - assert(tree->gtLclVarCommon.GetLclNum() == fieldLclIndex); + assert(tree->AsLclVarCommon()->GetLclNum() == fieldLclIndex); tree->gtType = fldVarDsc->TypeGet(); #ifdef DEBUG if (verbose) @@ -17450,7 +17450,7 @@ GenTree* Compiler::fgMorphImplicitByRefArgs(GenTree* tree, bool isAddr) assert(isAddr == (tree->gtOper == GT_ADDR)); GenTree* lclVarTree = isAddr ? tree->AsOp()->gtOp1 : tree; - unsigned lclNum = lclVarTree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = lclVarTree->AsLclVarCommon()->GetLclNum(); LclVarDsc* lclVarDsc = &lvaTable[lclNum]; CORINFO_FIELD_HANDLE fieldHnd; @@ -17514,7 +17514,7 @@ GenTree* Compiler::fgMorphImplicitByRefArgs(GenTree* tree, bool isAddr) { // change &(X.f) [i.e. GT_ADDR of local for promoted arg field] // into &(X, f) [i.e. GT_ADDR of GT_FIELD off ptr param] - lclVarTree->gtLclVarCommon.SetLclNum(lclNum); + lclVarTree->AsLclVarCommon()->SetLclNum(lclNum); lclVarTree->gtType = TYP_BYREF; tree->AsOp()->gtOp1 = gtNewFieldRef(fieldRefType, fieldHnd, lclVarTree, fieldOffset); } @@ -17534,7 +17534,7 @@ GenTree* Compiler::fgMorphImplicitByRefArgs(GenTree* tree, bool isAddr) if (fieldHnd) { - tree->gtLclVarCommon.SetLclNum(lclNum); + tree->AsLclVarCommon()->SetLclNum(lclNum); tree = gtNewFieldRef(fieldRefType, fieldHnd, tree, fieldOffset); } else diff --git a/src/jit/optcse.cpp b/src/jit/optcse.cpp index 93c557c870a9..55fc666d7bc8 100644 --- a/src/jit/optcse.cpp +++ b/src/jit/optcse.cpp @@ -2202,7 +2202,7 @@ class CSE_Heuristic cse = m_pCompiler->gtNewLclvNode(cseLclVarNum, cseLclVarTyp); // Assign the ssa num for the use. Note it may be the reserved num. - cse->gtLclVarCommon.SetSsaNum(cseSsaNum); + cse->AsLclVarCommon()->SetSsaNum(cseSsaNum); // assign the proper ValueNumber, A CSE use discards any exceptions cse->gtVNPair = vnStore->VNPNormalPair(exp->gtVNPair); @@ -2389,7 +2389,7 @@ class CSE_Heuristic ref->gtVNPair = val->gtVNPair; // The new 'ref' is the same as 'val' // Assign the ssa num for the ref use. Note it may be the reserved num. - ref->gtLclVarCommon.SetSsaNum(cseSsaNum); + ref->AsLclVarCommon()->SetSsaNum(cseSsaNum); // If it has a zero-offset field seq, copy annotation to the ref if (hasZeroMapAnnotation) diff --git a/src/jit/optimizer.cpp b/src/jit/optimizer.cpp index 59b4e0532dc2..d3784059a0bc 100644 --- a/src/jit/optimizer.cpp +++ b/src/jit/optimizer.cpp @@ -722,7 +722,7 @@ bool Compiler::optPopulateInitInfo(unsigned loopInd, GenTree* init, unsigned ite GenTree* lhs = init->AsOp()->gtOp1; GenTree* rhs = init->AsOp()->gtOp2; // LHS has to be local and should equal iterVar. - if (lhs->gtOper != GT_LCL_VAR || lhs->gtLclVarCommon.GetLclNum() != iterVar) + if (lhs->gtOper != GT_LCL_VAR || lhs->AsLclVarCommon()->GetLclNum() != iterVar) { return false; } @@ -737,7 +737,7 @@ bool Compiler::optPopulateInitInfo(unsigned loopInd, GenTree* init, unsigned ite else if (rhs->gtOper == GT_LCL_VAR) { optLoopTable[loopInd].lpFlags |= LPFLG_VAR_INIT; - optLoopTable[loopInd].lpVarInit = rhs->gtLclVarCommon.GetLclNum(); + optLoopTable[loopInd].lpVarInit = rhs->AsLclVarCommon()->GetLclNum(); } else { @@ -788,12 +788,12 @@ bool Compiler::optCheckIterInLoopTest( GenTree* limitOp; // Make sure op1 or op2 is the iterVar. - if (opr1->gtOper == GT_LCL_VAR && opr1->gtLclVarCommon.GetLclNum() == iterVar) + if (opr1->gtOper == GT_LCL_VAR && opr1->AsLclVarCommon()->GetLclNum() == iterVar) { iterOp = opr1; limitOp = opr2; } - else if (opr2->gtOper == GT_LCL_VAR && opr2->gtLclVarCommon.GetLclNum() == iterVar) + else if (opr2->gtOper == GT_LCL_VAR && opr2->AsLclVarCommon()->GetLclNum() == iterVar) { iterOp = opr2; limitOp = opr1; @@ -820,7 +820,7 @@ bool Compiler::optCheckIterInLoopTest( optLoopTable[loopInd].lpFlags |= LPFLG_SIMD_LIMIT; } } - else if (limitOp->gtOper == GT_LCL_VAR && !optIsVarAssigned(from, to, nullptr, limitOp->gtLclVarCommon.GetLclNum())) + else if (limitOp->gtOper == GT_LCL_VAR && !optIsVarAssigned(from, to, nullptr, limitOp->AsLclVarCommon()->GetLclNum())) { optLoopTable[loopInd].lpFlags |= LPFLG_VAR_LIMIT; } @@ -3655,11 +3655,11 @@ void Compiler::optUnrollLoops() /* Make sure everything looks ok */ if ((init->gtOper != GT_ASG) || (init->AsOp()->gtOp1->gtOper != GT_LCL_VAR) || - (init->AsOp()->gtOp1->gtLclVarCommon.GetLclNum() != lvar) || (init->AsOp()->gtOp2->gtOper != GT_CNS_INT) || + (init->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lvar) || (init->AsOp()->gtOp2->gtOper != GT_CNS_INT) || (init->AsOp()->gtOp2->AsIntCon()->gtIconVal != lbeg) || !((incr->gtOper == GT_ADD) || (incr->gtOper == GT_SUB)) || (incr->AsOp()->gtOp1->gtOper != GT_LCL_VAR) || - (incr->AsOp()->gtOp1->gtLclVarCommon.GetLclNum() != lvar) || (incr->AsOp()->gtOp2->gtOper != GT_CNS_INT) || + (incr->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lvar) || (incr->AsOp()->gtOp2->gtOper != GT_CNS_INT) || (incr->AsOp()->gtOp2->AsIntCon()->gtIconVal != iterInc) || (testStmt->GetRootNode()->gtOper != GT_JTRUE)) @@ -5946,7 +5946,7 @@ Compiler::fgWalkResult Compiler::optIsVarAssgCB(GenTree** pTree, fgWalkData* dat if (destOper == GT_LCL_VAR) { - unsigned tvar = dest->gtLclVarCommon.GetLclNum(); + unsigned tvar = dest->AsLclVarCommon()->GetLclNum(); if (tvar < lclMAX_ALLSET_TRACKED) { AllVarSetOps::AddElemD(data->compiler, desc->ivaMaskVal, tvar); @@ -8191,7 +8191,7 @@ bool Compiler::optIdentifyLoopOptInfo(unsigned loopNum, LoopCloneContext* contex #ifdef DEBUG GenTree* op1 = pLoop->lpIterator(); - noway_assert((op1->gtOper == GT_LCL_VAR) && (op1->gtLclVarCommon.GetLclNum() == ivLclNum)); + noway_assert((op1->gtOper == GT_LCL_VAR) && (op1->AsLclVarCommon()->GetLclNum() == ivLclNum)); #endif JITDUMP("Checking blocks " FMT_BB ".." FMT_BB " for optimization candidates\n", beg->bbNum, @@ -8282,13 +8282,13 @@ bool Compiler::optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsN { return false; } - unsigned arrLcl = arrBndsChk->gtArrLen->gtGetOp1()->gtLclVarCommon.GetLclNum(); + unsigned arrLcl = arrBndsChk->gtArrLen->gtGetOp1()->AsLclVarCommon()->GetLclNum(); if (lhsNum != BAD_VAR_NUM && arrLcl != lhsNum) { return false; } - unsigned indLcl = arrBndsChk->gtIndex->gtLclVarCommon.GetLclNum(); + unsigned indLcl = arrBndsChk->gtIndex->AsLclVarCommon()->GetLclNum(); GenTree* after = tree->gtGetOp2(); @@ -8314,7 +8314,7 @@ bool Compiler::optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsN } GenTree* base = sibo->gtGetOp1(); GenTree* sio = sibo->gtGetOp2(); // sio == scale*index + offset - if (base->OperGet() != GT_LCL_VAR || base->gtLclVarCommon.GetLclNum() != arrLcl) + if (base->OperGet() != GT_LCL_VAR || base->AsLclVarCommon()->GetLclNum() != arrLcl) { return false; } @@ -8347,7 +8347,7 @@ bool Compiler::optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsN #else GenTree* indexVar = index; #endif - if (indexVar->gtOper != GT_LCL_VAR || indexVar->gtLclVarCommon.GetLclNum() != indLcl) + if (indexVar->gtOper != GT_LCL_VAR || indexVar->AsLclVarCommon()->GetLclNum() != indLcl) { return false; } @@ -8424,7 +8424,7 @@ bool Compiler::optReconstructArrIndex(GenTree* tree, ArrIndex* result, unsigned { return false; } - unsigned lhsNum = lhs->gtLclVarCommon.GetLclNum(); + unsigned lhsNum = lhs->AsLclVarCommon()->GetLclNum(); GenTree* after = tree->gtGetOp2(); // Pass the "lhsNum", so we can verify if indeed it is used as the array base. return optExtractArrIndex(after, result, lhsNum); @@ -8567,7 +8567,7 @@ Compiler::fgWalkResult Compiler::optValidRangeCheckIndex(GenTree** pTree, fgWalk if (tree->gtOper == GT_LCL_VAR) { - if (pData->pCompiler->lvaTable[tree->gtLclVarCommon.GetLclNum()].lvAddrExposed) + if (pData->pCompiler->lvaTable[tree->AsLclVarCommon()->GetLclNum()].lvAddrExposed) { pData->bValidIndex = false; return WALK_ABORT; @@ -8612,9 +8612,9 @@ bool Compiler::optIsRangeCheckRemovable(GenTree* tree) else { noway_assert(pArray->gtType == TYP_REF); - noway_assert(pArray->gtLclVarCommon.GetLclNum() < lvaCount); + noway_assert(pArray->AsLclVarCommon()->GetLclNum() < lvaCount); - if (lvaTable[pArray->gtLclVarCommon.GetLclNum()].lvAddrExposed) + if (lvaTable[pArray->AsLclVarCommon()->GetLclNum()].lvAddrExposed) { // If the array address has been taken, don't do the optimization // (this restriction can be lowered a bit, but i don't think it's worth it) @@ -8765,7 +8765,7 @@ GenTree* Compiler::optIsBoolCond(GenTree* condBranch, GenTree** compPtr, bool* b { /* is it a boolean local variable */ - unsigned lclNum = opr1->gtLclVarCommon.GetLclNum(); + unsigned lclNum = opr1->AsLclVarCommon()->GetLclNum(); noway_assert(lclNum < lvaCount); if (lvaTable[lclNum].lvIsBoolean) diff --git a/src/jit/simd.cpp b/src/jit/simd.cpp index 3bd1cea7ab41..382a52f51746 100644 --- a/src/jit/simd.cpp +++ b/src/jit/simd.cpp @@ -1630,7 +1630,7 @@ GenTree* Compiler::impSIMDAbs(CORINFO_CLASS_HANDLE typeHnd, var_types baseType, if (op1->OperGet() == GT_LCL_VAR) { - op1LclNum = op1->gtLclVarCommon.GetLclNum(); + op1LclNum = op1->AsLclVarCommon()->GetLclNum(); op1Assign = nullptr; } else @@ -2007,7 +2007,7 @@ GenTree* Compiler::getOp1ForConstructor(OPCODE opcode, GenTree* newobjThis, CORI assert(newobjThis->gtOper == GT_ADDR && newobjThis->AsOp()->gtOp1->gtOper == GT_LCL_VAR); // push newobj result on type stack - unsigned tmp = op1->AsOp()->gtOp1->gtLclVarCommon.GetLclNum(); + unsigned tmp = op1->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum(); impPushOnStack(gtNewLclvNode(tmp, lvaGetRealType(tmp)), verMakeTypeInfo(clsHnd).NormaliseForStack()); } else diff --git a/src/jit/simdcodegenxarch.cpp b/src/jit/simdcodegenxarch.cpp index e29f125e2fa9..3f845588e5fd 100644 --- a/src/jit/simdcodegenxarch.cpp +++ b/src/jit/simdcodegenxarch.cpp @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +/// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. @@ -850,7 +850,7 @@ void CodeGen::genSIMDIntrinsicInit(GenTreeSIMD* simdNode) else if (op1->OperIsLocalAddr()) { unsigned offset = (op1->OperGet() == GT_LCL_FLD_ADDR) ? op1->AsLclFld()->gtLclOffs : 0; - GetEmitter()->emitIns_R_S(ins, emitTypeSize(targetType), targetReg, op1->gtLclVarCommon.GetLclNum(), + GetEmitter()->emitIns_R_S(ins, emitTypeSize(targetType), targetReg, op1->AsLclVarCommon()->GetLclNum(), offset); } else @@ -2454,7 +2454,7 @@ void CodeGen::genSIMDIntrinsicGetItem(GenTreeSIMD* simdNode) // There are three parts to the total offset here: // {offset of local} + {offset of SIMD Vector field (lclFld only)} + {offset of element within SIMD vector}. bool isEBPbased; - unsigned varNum = op1->gtLclVarCommon.GetLclNum(); + unsigned varNum = op1->AsLclVarCommon()->GetLclNum(); offset += compiler->lvaFrameAddress(varNum, &isEBPbased); if (op1->OperGet() == GT_LCL_FLD) { @@ -2911,7 +2911,7 @@ void CodeGen::genStoreLclTypeSIMD12(GenTree* treeNode) assert((treeNode->OperGet() == GT_STORE_LCL_FLD) || (treeNode->OperGet() == GT_STORE_LCL_VAR)); unsigned offs = 0; - unsigned varNum = treeNode->gtLclVarCommon.GetLclNum(); + unsigned varNum = treeNode->AsLclVarCommon()->GetLclNum(); assert(varNum < compiler->lvaCount); if (treeNode->OperGet() == GT_STORE_LCL_FLD) @@ -2953,7 +2953,7 @@ void CodeGen::genLoadLclTypeSIMD12(GenTree* treeNode) regNumber targetReg = treeNode->GetRegNum(); unsigned offs = 0; - unsigned varNum = treeNode->gtLclVarCommon.GetLclNum(); + unsigned varNum = treeNode->AsLclVarCommon()->GetLclNum(); assert(varNum < compiler->lvaCount); if (treeNode->OperGet() == GT_LCL_FLD) diff --git a/src/jit/ssabuilder.cpp b/src/jit/ssabuilder.cpp index 3e75131b4d38..71497611713f 100644 --- a/src/jit/ssabuilder.cpp +++ b/src/jit/ssabuilder.cpp @@ -117,7 +117,7 @@ void Compiler::fgResetForSsa() { if (tree->IsLocal()) { - tree->gtLclVarCommon.SetSsaNum(SsaConfig::RESERVED_SSA_NUM); + tree->AsLclVarCommon()->SetSsaNum(SsaConfig::RESERVED_SSA_NUM); continue; } } @@ -665,7 +665,7 @@ static GenTree* GetPhiNode(BasicBlock* block, unsigned lclNum) GenTree* phiLhs = tree->AsOp()->gtOp1; assert(phiLhs->OperGet() == GT_LCL_VAR); - if (phiLhs->gtLclVarCommon.GetLclNum() == lclNum) + if (phiLhs->AsLclVarCommon()->GetLclNum() == lclNum) { return tree->AsOp()->gtOp2; } @@ -983,11 +983,11 @@ void SsaBuilder::TreeRenameVariables(GenTree* tree, BasicBlock* block, SsaRename return; } - unsigned lclNum = tree->gtLclVarCommon.GetLclNum(); + unsigned lclNum = tree->AsLclVarCommon()->GetLclNum(); // Is this a variable we exclude from SSA? if (!m_pCompiler->lvaInSsa(lclNum)) { - tree->gtLclVarCommon.SetSsaNum(SsaConfig::RESERVED_SSA_NUM); + tree->AsLclVarCommon()->SetSsaNum(SsaConfig::RESERVED_SSA_NUM); return; } @@ -1036,7 +1036,7 @@ void SsaBuilder::TreeRenameVariables(GenTree* tree, BasicBlock* block, SsaRename } else { - tree->gtLclVarCommon.SetSsaNum(SsaConfig::RESERVED_SSA_NUM); + tree->AsLclVarCommon()->SetSsaNum(SsaConfig::RESERVED_SSA_NUM); return; } } diff --git a/src/jit/treelifeupdater.cpp b/src/jit/treelifeupdater.cpp index 404865b1d7bc..3e6f345f6a1c 100644 --- a/src/jit/treelifeupdater.cpp +++ b/src/jit/treelifeupdater.cpp @@ -37,7 +37,7 @@ void TreeLifeUpdater::UpdateLifeVar(GenTree* tree) { lclVarTree = tree; } - unsigned int lclNum = lclVarTree->gtLclVarCommon.GetLclNum(); + unsigned int lclNum = lclVarTree->AsLclVarCommon()->GetLclNum(); LclVarDsc* varDsc = compiler->lvaTable + lclNum; #ifdef DEBUG diff --git a/src/jit/valuenum.cpp b/src/jit/valuenum.cpp index fba94c65de11..b1b4ea0e21f6 100644 --- a/src/jit/valuenum.cpp +++ b/src/jit/valuenum.cpp @@ -7618,7 +7618,7 @@ void Compiler::fgValueNumberTree(GenTree* tree) { FieldSeqNode* fieldSeq = nullptr; ValueNum newVN = ValueNumStore::NoVN; - if (!lvaInSsa(arg->gtLclVarCommon.GetLclNum())) + if (!lvaInSsa(arg->AsLclVarCommon()->GetLclNum())) { newVN = vnStore->VNForExpr(compCurBB, TYP_BYREF); } @@ -7633,9 +7633,9 @@ void Compiler::fgValueNumberTree(GenTree* tree) } if (newVN == ValueNumStore::NoVN) { - assert(arg->gtLclVarCommon.GetSsaNum() != ValueNumStore::NoVN); + assert(arg->AsLclVarCommon()->GetSsaNum() != ValueNumStore::NoVN); newVN = vnStore->VNForFunc(TYP_BYREF, VNF_PtrToLoc, - vnStore->VNForIntCon(arg->gtLclVarCommon.GetLclNum()), + vnStore->VNForIntCon(arg->AsLclVarCommon()->GetLclNum()), vnStore->VNForFieldSeq(fieldSeq)); } tree->gtVNPair.SetBoth(newVN); From 858925d0fb08b5c60265823526edf20bf2bada35 Mon Sep 17 00:00:00 2001 From: Sinan Kaya Date: Tue, 15 Oct 2019 22:12:01 +0000 Subject: [PATCH 2/5] Format patch --- src/jit/codegenxarch.cpp | 4 ++-- src/jit/importer.cpp | 12 +++++++----- src/jit/morph.cpp | 3 ++- src/jit/optimizer.cpp | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/jit/codegenxarch.cpp b/src/jit/codegenxarch.cpp index 7658c92c1f08..8d0307f8e42e 100644 --- a/src/jit/codegenxarch.cpp +++ b/src/jit/codegenxarch.cpp @@ -1365,8 +1365,8 @@ void CodeGen::genFloatReturn(GenTree* treeNode) if (compiler->lvaTable[op1->AsLclVarCommon()->GetLclNum()].GetRegNum() != REG_STK) { op1->gtFlags |= GTF_SPILL; - inst_TT_RV(ins_Store(op1->gtType, compiler->isSIMDTypeLocalAligned(op1->AsLclVarCommon()->GetLclNum())), op1, - op1->GetRegNum()); + inst_TT_RV(ins_Store(op1->gtType, compiler->isSIMDTypeLocalAligned(op1->AsLclVarCommon()->GetLclNum())), + op1, op1->GetRegNum()); } // Now, load it to the fp stack. GetEmitter()->emitIns_S(INS_fld, emitTypeSize(op1), op1->AsLclVarCommon()->GetLclNum(), 0); diff --git a/src/jit/importer.cpp b/src/jit/importer.cpp index 9d511060817b..4b57e93444ec 100644 --- a/src/jit/importer.cpp +++ b/src/jit/importer.cpp @@ -2329,7 +2329,8 @@ void Compiler::impSpillStackEnsure(bool spillLeaves) // Temps introduced by the importer itself don't need to be spilled - bool isTempLcl = (tree->OperGet() == GT_LCL_VAR) && (tree->AsLclVarCommon()->GetLclNum() >= info.compLocalsCount); + bool isTempLcl = + (tree->OperGet() == GT_LCL_VAR) && (tree->AsLclVarCommon()->GetLclNum() >= info.compLocalsCount); if (isTempLcl) { @@ -2555,7 +2556,7 @@ BasicBlock* Compiler::impPushCatchArgOnStack(BasicBlock* hndBlk, CORINFO_CLASS_H #if defined(JIT32_GCENCODER) const bool forceInsertNewBlock = isSingleBlockFilter || compStressCompile(STRESS_CATCH_ARG, 5); #else - const bool forceInsertNewBlock = compStressCompile(STRESS_CATCH_ARG, 5); + const bool forceInsertNewBlock = compStressCompile(STRESS_CATCH_ARG, 5); #endif // defined(JIT32_GCENCODER) /* Spill GT_CATCH_ARG to a temp if there are jumps to the beginning of the handler */ @@ -3075,8 +3076,8 @@ GenTree* Compiler::impInitializeArrayIntrinsic(CORINFO_SIG_INFO* sig) // GenTree* arrayAssignment = impLastStmt->GetRootNode(); if ((arrayAssignment->gtOper != GT_ASG) || (arrayAssignment->AsOp()->gtOp1->gtOper != GT_LCL_VAR) || - (arrayLocalNode->gtOper != GT_LCL_VAR) || - (arrayAssignment->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != arrayLocalNode->AsLclVarCommon()->GetLclNum())) + (arrayLocalNode->gtOper != GT_LCL_VAR) || (arrayAssignment->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != + arrayLocalNode->AsLclVarCommon()->GetLclNum())) { return nullptr; } @@ -16435,7 +16436,8 @@ bool Compiler::impReturnInstruction(BasicBlock* block, int prefixFlags, OPCODE& // Some other block(s) have seen the CEE_RET first. // Better they spilled to the same temp. assert(impInlineInfo->retExpr->gtOper == GT_LCL_VAR); - assert(impInlineInfo->retExpr->AsLclVarCommon()->GetLclNum() == op2->AsLclVarCommon()->GetLclNum()); + assert(impInlineInfo->retExpr->AsLclVarCommon()->GetLclNum() == + op2->AsLclVarCommon()->GetLclNum()); } #endif } diff --git a/src/jit/morph.cpp b/src/jit/morph.cpp index fce0953a3bb4..bf2aa4953a4f 100644 --- a/src/jit/morph.cpp +++ b/src/jit/morph.cpp @@ -3727,7 +3727,8 @@ GenTreeCall* Compiler::fgMorphArgs(GenTreeCall* call) assert(argEntry->structDesc.passedInRegisters); if (lclVar != nullptr) { - if (lvaGetPromotionType(lclVar->AsLclVarCommon()->GetLclNum()) == PROMOTION_TYPE_INDEPENDENT) + if (lvaGetPromotionType(lclVar->AsLclVarCommon()->GetLclNum()) == + PROMOTION_TYPE_INDEPENDENT) { copyBlkClass = objClass; } diff --git a/src/jit/optimizer.cpp b/src/jit/optimizer.cpp index d3784059a0bc..65a84a439680 100644 --- a/src/jit/optimizer.cpp +++ b/src/jit/optimizer.cpp @@ -820,7 +820,8 @@ bool Compiler::optCheckIterInLoopTest( optLoopTable[loopInd].lpFlags |= LPFLG_SIMD_LIMIT; } } - else if (limitOp->gtOper == GT_LCL_VAR && !optIsVarAssigned(from, to, nullptr, limitOp->AsLclVarCommon()->GetLclNum())) + else if (limitOp->gtOper == GT_LCL_VAR && + !optIsVarAssigned(from, to, nullptr, limitOp->AsLclVarCommon()->GetLclNum())) { optLoopTable[loopInd].lpFlags |= LPFLG_VAR_LIMIT; } From 2656a2a85b56e45ffc278b51632331098b39999d Mon Sep 17 00:00:00 2001 From: Sinan Kaya Date: Thu, 17 Oct 2019 02:59:52 +0000 Subject: [PATCH 3/5] Format patch --- src/jit/gentree.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jit/gentree.cpp b/src/jit/gentree.cpp index 91f6e2addaeb..7114f53e7c64 100644 --- a/src/jit/gentree.cpp +++ b/src/jit/gentree.cpp @@ -6942,8 +6942,8 @@ GenTree* Compiler::gtClone(GenTree* tree, bool complexOK) // Remember that the LclVar node has been cloned. The flag will be set // on 'copy' as well. tree->gtFlags |= GTF_VAR_CLONED; - copy = - gtNewLclvNode(tree->AsLclVarCommon()->GetLclNum(), tree->gtType DEBUGARG(tree->AsLclVar()->gtLclILoffs)); + copy = gtNewLclvNode(tree->AsLclVarCommon()->GetLclNum(), + tree->gtType DEBUGARG(tree->AsLclVar()->gtLclILoffs)); break; case GT_LCL_FLD: From 5336b1e1de1990335978d63fabc6b75b236d7635 Mon Sep 17 00:00:00 2001 From: Sinan Kaya Date: Thu, 17 Oct 2019 19:40:21 +0000 Subject: [PATCH 4/5] Format patch #3 --- src/jit/optimizer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/jit/optimizer.cpp b/src/jit/optimizer.cpp index 65a84a439680..15aa566f7d60 100644 --- a/src/jit/optimizer.cpp +++ b/src/jit/optimizer.cpp @@ -3656,12 +3656,12 @@ void Compiler::optUnrollLoops() /* Make sure everything looks ok */ if ((init->gtOper != GT_ASG) || (init->AsOp()->gtOp1->gtOper != GT_LCL_VAR) || - (init->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lvar) || (init->AsOp()->gtOp2->gtOper != GT_CNS_INT) || - (init->AsOp()->gtOp2->AsIntCon()->gtIconVal != lbeg) || + (init->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lvar) || + (init->AsOp()->gtOp2->gtOper != GT_CNS_INT) || (init->AsOp()->gtOp2->AsIntCon()->gtIconVal != lbeg) || !((incr->gtOper == GT_ADD) || (incr->gtOper == GT_SUB)) || (incr->AsOp()->gtOp1->gtOper != GT_LCL_VAR) || - (incr->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lvar) || (incr->AsOp()->gtOp2->gtOper != GT_CNS_INT) || - (incr->AsOp()->gtOp2->AsIntCon()->gtIconVal != iterInc) || + (incr->AsOp()->gtOp1->AsLclVarCommon()->GetLclNum() != lvar) || + (incr->AsOp()->gtOp2->gtOper != GT_CNS_INT) || (incr->AsOp()->gtOp2->AsIntCon()->gtIconVal != iterInc) || (testStmt->GetRootNode()->gtOper != GT_JTRUE)) { From c3b41dc3d6791703913f484dab06cae20c606b1a Mon Sep 17 00:00:00 2001 From: Sinan Kaya Date: Fri, 18 Oct 2019 18:51:28 +0000 Subject: [PATCH 5/5] Remove redundant / --- src/jit/simdcodegenxarch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jit/simdcodegenxarch.cpp b/src/jit/simdcodegenxarch.cpp index 3f845588e5fd..57e0ee9518a3 100644 --- a/src/jit/simdcodegenxarch.cpp +++ b/src/jit/simdcodegenxarch.cpp @@ -1,4 +1,4 @@ -/// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information.