Delete unused variables in jit. Part1. (#23399)
authorSergey Andreenko <seandree@microsoft.com>
Fri, 22 Mar 2019 23:33:23 +0000 (16:33 -0700)
committerGitHub <noreply@github.com>
Fri, 22 Mar 2019 23:33:23 +0000 (16:33 -0700)
* Clean `assertionprop.cpp`.

* Clean `codegencommon.cpp`.:

* Clean `codegenlinear.cpp`.

* Clean `compiler.cpp`.

* Clean `earlyprop.cpp`.

* Clean `gschecks.cpp`.

* Clean 'lclvars.cpp`.

* Clean `jiteh.cpp`.

* Clean `liveness.cpp`.

* Clean `hashbv.cpp`.

* Clean `gcinfo.cpp`.

* Clean `optimizer.cpp`.

12 files changed:
src/jit/assertionprop.cpp
src/jit/codegencommon.cpp
src/jit/codegenlinear.cpp
src/jit/compiler.cpp
src/jit/earlyprop.cpp
src/jit/gcinfo.cpp
src/jit/gschecks.cpp
src/jit/hashbv.cpp
src/jit/jiteh.cpp
src/jit/lclvars.cpp
src/jit/liveness.cpp
src/jit/optimizer.cpp

index 1ee56b2..3747b2e 100644 (file)
@@ -453,9 +453,6 @@ void Compiler::optAddCopies()
             noway_assert(tree && op1 && tree->OperIs(GT_ASG) && (op1->gtOper == GT_LCL_VAR) &&
                          (op1->gtLclVarCommon.gtLclNum == lclNum));
 
-            /*  TODO-Review: BB_UNITY_WEIGHT is not the correct block weight */
-            unsigned blockWeight = BB_UNITY_WEIGHT;
-
             /* Assign the old expression into the new temp */
 
             GenTree* newAsgn = gtNewTempAssign(copyLclNum, tree->gtOp.gtOp2);
@@ -1309,7 +1306,6 @@ AssertionIndex Compiler::optCreateAssertion(GenTree*         op1,
         {
             unsigned lclNum = op1->gtLclVarCommon.gtLclNum;
             noway_assert(lclNum < lvaCount);
-            LclVarDsc* lclVar = &lvaTable[lclNum];
 
             //  If the local variable is not in SSA then bail
             if (!lvaInSsa(lclNum))
@@ -2203,8 +2199,6 @@ AssertionIndex Compiler::optFindComplementary(AssertionIndex assertIndex)
         return index;
     }
 
-    optAssertionKind complementaryAssertionKind =
-        (inputAssertion->assertionKind == OAK_EQUAL) ? OAK_NOT_EQUAL : OAK_EQUAL;
     for (AssertionIndex index = 1; index <= optAssertionCount; ++index)
     {
         // Make sure assertion kinds are complementary and op1, op2 kinds match.
@@ -2404,8 +2398,7 @@ GenTree* Compiler::optVNConstantPropOnTree(BasicBlock* block, GenTree* stmt, Gen
         return nullptr;
     }
 
-    GenTree* newTree     = tree;
-    GenTree* sideEffList = nullptr;
+    GenTree* newTree = tree;
     switch (vnStore->TypeOfVN(vnCns))
     {
         case TYP_FLOAT:
@@ -3540,8 +3533,6 @@ GenTree* Compiler::optAssertionProp_Ind(ASSERT_VALARG_TP assertions, GenTree* tr
         return nullptr;
     }
 
-    unsigned lclNum = op1->gtLclVarCommon.gtLclNum;
-
 #ifdef DEBUG
     bool           vnBased = false;
     AssertionIndex index   = NO_ASSERTION_INDEX;
@@ -4437,7 +4428,6 @@ private:
     ASSERT_TP* mJumpDestOut;
     ASSERT_TP* mJumpDestGen;
 
-    Compiler*     m_pCompiler;
     BitVecTraits* apTraits;
 
 public:
@@ -4446,7 +4436,6 @@ public:
         , preMergeJumpDestOut(BitVecOps::UninitVal())
         , mJumpDestOut(jumpDestOut)
         , mJumpDestGen(jumpDestGen)
-        , m_pCompiler(pCompiler)
         , apTraits(pCompiler->apTraits)
     {
     }
index 2e15383..9efa517 100644 (file)
@@ -2339,7 +2339,6 @@ void CodeGen::genGenerateCode(void** codePtr, ULONG* nativeSizeOfCode)
     if (compiler->opts.dmpHex)
     {
         size_t consSize = getEmitter()->emitDataSize();
-        size_t infoSize = compiler->compInfoBlkSize;
 
         fprintf(dmpf, "Generated code for %s:\n", compiler->info.compFullName);
         fprintf(dmpf, "\n");
@@ -2353,6 +2352,7 @@ void CodeGen::genGenerateCode(void** codePtr, ULONG* nativeSizeOfCode)
             fprintf(dmpf, "    Const at %p [%04X bytes]\n", dspPtr(consPtr), consSize);
         }
 #ifdef JIT32_GCENCODER
+        size_t infoSize = compiler->compInfoBlkSize;
         if (infoSize)
             fprintf(dmpf, "    Info  at %p [%04X bytes]\n", dspPtr(infoPtr), infoSize);
 #endif // JIT32_GCENCODER
@@ -6080,9 +6080,8 @@ void CodeGen::genZeroInitFrame(int untrLclHi, int untrLclLo, regNumber initReg,
 
 #else // !define(_TARGET_ARM_)
 
-        regNumber rZero1 = REG_ZR;
-        rAddr            = initReg;
-        *pInitRegZeroed  = false;
+        rAddr           = initReg;
+        *pInitRegZeroed = false;
 
 #endif // !defined(_TARGET_ARM_)
 
index 595f860..7c5c018 100644 (file)
@@ -1147,7 +1147,7 @@ void CodeGen::genConsumeRegAndCopy(GenTree* node, regNumber needReg)
     {
         return;
     }
-    regNumber treeReg = genConsumeReg(node);
+    genConsumeReg(node);
     genCopyRegIfNeeded(node, needReg);
 }
 
@@ -1846,9 +1846,8 @@ void CodeGen::genProduceReg(GenTree* tree)
 
                 for (unsigned i = 0; i < regCount; ++i)
                 {
-                    var_types type    = retTypeDesc->GetReturnRegType(i);
-                    regNumber fromReg = call->GetRegNumByIdx(i);
-                    regNumber toReg   = copy->GetRegNumByIdx(i);
+                    var_types type  = retTypeDesc->GetReturnRegType(i);
+                    regNumber toReg = copy->GetRegNumByIdx(i);
 
                     if (toReg != REG_NA)
                     {
index 7bb93a2..a594e23 100644 (file)
@@ -2711,7 +2711,6 @@ void Compiler::compInitOptions(JitFlags* jitFlags)
     bool    dumpIRBlockHeaders = false;
     bool    dumpIRExit         = false;
     LPCWSTR dumpIRPhase        = nullptr;
-    LPCWSTR dumpIRFormat       = nullptr;
 
     if (!altJitConfig || opts.altJit)
     {
@@ -7120,17 +7119,6 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 void codeGeneratorCodeSizeBeg()
 {
 }
-/*****************************************************************************/
-
-/*****************************************************************************
- *
- *  If any temporary tables are smaller than 'genMinSize2free' we won't bother
- *  freeing them.
- */
-
-const size_t genMinSize2free = 64;
-
-/*****************************************************************************/
 
 /*****************************************************************************
  *
@@ -7543,7 +7531,6 @@ void CompTimeSummaryInfo::Print(FILE* f)
         return;
     }
 
-    bool   extraInfo  = (JitConfig.JitEECallTimingInfo() != 0);
     double totTime_ms = 0.0;
 
     fprintf(f, "JIT Compilation time report:\n");
@@ -7563,6 +7550,7 @@ void CompTimeSummaryInfo::Print(FILE* f)
         const char* extraHdr1 = "";
         const char* extraHdr2 = "";
 #if MEASURE_CLRAPI_CALLS
+        bool extraInfo = (JitConfig.JitEECallTimingInfo() != 0);
         if (extraInfo)
         {
             extraHdr1 = "    CLRs/meth   % in CLR";
@@ -7580,9 +7568,8 @@ void CompTimeSummaryInfo::Print(FILE* f)
         assert(_countof(PhaseNames) == PHASE_NUMBER_OF);
         for (int i = 0; i < PHASE_NUMBER_OF; i++)
         {
-            double phase_tot_ms  = (((double)m_total.m_cyclesByPhase[i]) / countsPerSec) * 1000.0;
-            double phase_max_ms  = (((double)m_maximum.m_cyclesByPhase[i]) / countsPerSec) * 1000.0;
-            double phase_tot_pct = 100.0 * phase_tot_ms / totTime_ms;
+            double phase_tot_ms = (((double)m_total.m_cyclesByPhase[i]) / countsPerSec) * 1000.0;
+            double phase_max_ms = (((double)m_maximum.m_cyclesByPhase[i]) / countsPerSec) * 1000.0;
 
 #if MEASURE_CLRAPI_CALLS
             // Skip showing CLR API call info if we didn't collect any
@@ -10889,15 +10876,8 @@ void cNodeIR(Compiler* comp, GenTree* tree)
 
 void cTreeIR(Compiler* comp, GenTree* tree)
 {
-    bool       foldLeafs    = comp->dumpIRNoLeafs;
-    bool       foldIndirs   = comp->dumpIRDataflow;
-    bool       foldLists    = comp->dumpIRNoLists;
-    bool       dataflowView = comp->dumpIRDataflow;
-    bool       dumpTypes    = comp->dumpIRTypes;
-    bool       dumpValnums  = comp->dumpIRValnums;
-    bool       noStmts      = comp->dumpIRNoStmts;
-    genTreeOps op           = tree->OperGet();
-    unsigned   childCount   = tree->NumChildren();
+    genTreeOps op         = tree->OperGet();
+    unsigned   childCount = tree->NumChildren();
     GenTree*   child;
 
     // Recurse and dump trees that this node depends on.
index 693294b..bd4c222 100644 (file)
@@ -322,7 +322,6 @@ GenTree* Compiler::optEarlyPropRewriteTree(GenTree* tree)
                         GenTree* comma = check->gtGetParent(nullptr);
                         if ((comma != nullptr) && comma->OperIs(GT_COMMA) && (comma->gtGetOp1() == check))
                         {
-                            GenTree* next = check->gtNext;
                             optRemoveRangeCheck(comma, compCurStmt);
                             // Both `tree` and `check` have been removed from the statement.
                             // 'tree' was replaced with 'nop' or side effect list under 'comma'.
index 14ca8a8..3f980ba 100644 (file)
@@ -638,8 +638,6 @@ void GCInfo::gcRegPtrSetInit()
 
 GCInfo::WriteBarrierForm GCInfo::gcWriteBarrierFormFromTargetAddress(GenTree* tgtAddr)
 {
-    GCInfo::WriteBarrierForm result = GCInfo::WBF_BarrierUnknown; // Default case, we have no information.
-
     // If we store through an int to a GC_REF field, we'll assume that needs to use a checked barriers.
     if (tgtAddr->TypeGet() == TYP_I_IMPL)
     {
index 8fe14b9..e52817a 100644 (file)
@@ -105,7 +105,6 @@ Compiler::fgWalkResult Compiler::gsMarkPtrsAndAssignGroups(GenTree** pTree, fgWa
     GenTree*             tree          = *pTree;
     ShadowParamVarInfo*  shadowVarInfo = pState->comp->gsShadowVarInfo;
     assert(shadowVarInfo);
-    bool     fIsBlk = false;
     unsigned lclNum;
 
     assert(!pState->isAssignSrc || pState->lvAssignDef != (unsigned)-1);
index 6aee93e..5539baa 100644 (file)
@@ -426,8 +426,6 @@ hashBv*& hashBv::hbvFreeList(hashBvGlobalData* data)
 
 void hashBv::hbvFree()
 {
-    Compiler* comp = this->compiler;
-
     int hts = hashtable_size();
     for (int i = 0; i < hts; i++)
     {
@@ -571,8 +569,6 @@ void hashBv::Resize(int newSize)
     }
     else if (oldSize > newSize)
     {
-        int shrinkFactor = oldSize / newSize;
-
         // shrink multiple lists into one list
         // more efficient ways to do this but...
         // if the lists are long, you shouldn't be shrinking.
@@ -922,8 +918,6 @@ int hashBv::countBits()
 
 bool hashBv::anySet()
 {
-    int result = 0;
-
     int hts = this->hashtable_size();
     for (int hashNum = 0; hashNum < hts; hashNum++)
     {
@@ -1299,7 +1293,6 @@ bool hashBv::MultiTraverseLHSBigger(hashBv* other)
         hashBvNode* o = other->nodeArr[h];
         while (o)
         {
-            hashBvNode* next = o->next;
             // figure out what dst list this goes to
             int          hash     = getHashForIndex(o->baseIndex, hts);
             int          dstIndex = (hash - h) >> other->log2_hashSize;
@@ -1359,7 +1352,6 @@ bool hashBv::MultiTraverseLHSBigger(hashBv* other)
 template <typename Action>
 bool hashBv::MultiTraverseRHSBigger(hashBv* other)
 {
-    int hts = this->hashtable_size();
     int ots = other->hashtable_size();
 
     bool result    = Action::DefaultResult();
@@ -1459,8 +1451,6 @@ bool hashBv::MultiTraverseEqual(hashBv* other)
 
     for (int hashNum = 0; hashNum < hts; hashNum++)
     {
-        int destination = getHashForIndex(BITS_PER_NODE * hashNum, this->hashtable_size());
-
         hashBvNode** pa = &this->nodeArr[hashNum];
         hashBvNode** pb = &other->nodeArr[hashNum];
         hashBvNode*  b  = *pb;
@@ -1520,8 +1510,6 @@ bool hashBv::MultiTraverseEqual(hashBv* other)
 template <class Action>
 bool hashBv::MultiTraverse(hashBv* other)
 {
-    bool result = false;
-
     assert(this->numNodes == this->getNodeCount());
 
     Action::PreAction(this, other);
@@ -1646,8 +1634,6 @@ void hashBv::copyFrom(hashBv* other, Compiler* comp)
         while (otherNode)
         {
             // printf("otherNode is True...\n");
-            hashBvNode* next = *splicePoint;
-
             this->numNodes++;
 
             if (freeList)
index bf47698..5179dd2 100644 (file)
@@ -907,8 +907,6 @@ void Compiler::ehGetCallFinallyBlockRange(unsigned finallyIndex, BasicBlock** be
     assert(begBlk != nullptr);
     assert(endBlk != nullptr);
 
-    EHblkDsc* ehDsc = ehGetDsc(finallyIndex);
-
 #if FEATURE_EH_CALLFINALLY_THUNKS
     bool     inTryRegion;
     unsigned callFinallyRegionIndex = ehGetCallFinallyRegionIndex(finallyIndex, &inTryRegion);
@@ -934,8 +932,9 @@ void Compiler::ehGetCallFinallyBlockRange(unsigned finallyIndex, BasicBlock** be
         }
     }
 #else  // !FEATURE_EH_CALLFINALLY_THUNKS
-    *begBlk = ehDsc->ebdTryBeg;
-    *endBlk = ehDsc->ebdTryLast->bbNext;
+    EHblkDsc* ehDsc = ehGetDsc(finallyIndex);
+    *begBlk         = ehDsc->ebdTryBeg;
+    *endBlk         = ehDsc->ebdTryLast->bbNext;
 #endif // !FEATURE_EH_CALLFINALLY_THUNKS
 }
 
index d4916cb..722e18f 100644 (file)
@@ -550,7 +550,10 @@ void Compiler::lvaInitUserArgs(InitVarDscInfo* varDscInfo)
 
     const unsigned argSigLen = info.compMethodInfo->args.numArgs;
 
+#ifdef _TARGET_ARM_
     regMaskTP doubleAlignMask = RBM_NONE;
+#endif // _TARGET_ARM_
+
     for (unsigned i = 0; i < argSigLen;
          i++, varDscInfo->varNum++, varDscInfo->varDsc++, argLst = info.compCompHnd->getArgNext(argLst))
     {
@@ -569,8 +572,12 @@ void Compiler::lvaInitUserArgs(InitVarDscInfo* varDscInfo)
         }
 
         // For ARM, ARM64, and AMD64 varargs, all arguments go in integer registers
-        var_types argType     = mangleVarArgsType(varDsc->TypeGet());
+        var_types argType = mangleVarArgsType(varDsc->TypeGet());
+
+#ifdef _TARGET_ARM_
         var_types origArgType = argType;
+#endif // TARGET_ARM
+
         // ARM softfp calling convention should affect only the floating point arguments.
         // Otherwise there appear too many surplus pre-spills and other memory operations
         // with the associated locations .
@@ -1992,8 +1999,6 @@ bool Compiler::StructPromotionHelper::TryPromoteStructField(lvaStructFieldInfo&
         return false;
     }
 
-    COMP_HANDLE compHandl = compiler->info.compCompHnd;
-
     // Do not promote if the single field is not aligned at its natural boundary within
     // the struct field.
     CORINFO_FIELD_HANDLE innerFieldHndl   = compHandle->getFieldInClass(fieldInfo.fldTypeHnd, 0);
@@ -2451,7 +2456,6 @@ void Compiler::lvaSetStruct(unsigned varNum, CORINFO_CLASS_HANDLE typeHnd, bool
     }
 
     // Set the type and associated info if we haven't already set it.
-    var_types structType = varDsc->lvType;
     if (varDsc->lvType == TYP_UNDEF)
     {
         varDsc->lvType = TYP_STRUCT;
index c9d5452..2fb225e 100644 (file)
@@ -955,7 +955,6 @@ void Compiler::fgExtendDbgLifetimes()
         VarSetOps::DiffD(this, initVars, block->bbLiveIn);
 
         /* Add statements initializing the vars, if there are any to initialize */
-        unsigned blockWeight = block->getBBWeight(this);
 
         VarSetOps::Iter iter(this, initVars);
         unsigned        varIndex = 0;
@@ -1001,6 +1000,7 @@ void Compiler::fgExtendDbgLifetimes()
                     initRange.InsertBefore(nullptr, zero, store);
 
 #if !defined(_TARGET_64BIT_)
+                    unsigned blockWeight = block->getBBWeight(this);
                     DecomposeLongs::DecomposeRange(this, blockWeight, initRange);
 #endif // !defined(_TARGET_64BIT_)
                     m_pLowering->LowerRange(block, initRange);
index 795625a..0be4456 100644 (file)
@@ -7915,8 +7915,6 @@ void Compiler::optRemoveRangeCheck(GenTree* tree, GenTree* stmt)
 
     noway_assert(bndsChkTree->OperIsBoundsCheck());
 
-    GenTreeBoundsChk* bndsChk = tree->gtOp.gtOp1->AsBoundsChk();
-
 #ifdef DEBUG
     if (verbose)
     {