diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2017-02-10 20:35:12 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2017-02-10 20:35:12 +0900 |
commit | 4b11dc566a5bbfa1378d6266525c281b028abcc8 (patch) | |
tree | b48831a898906734f8884d08b6e18f1144ee2b82 /src/jit/codegenlinear.cpp | |
parent | db20f3f1bb8595633a7e16c8900fd401a453a6b5 (diff) | |
download | coreclr-4b11dc566a5bbfa1378d6266525c281b028abcc8.tar.gz coreclr-4b11dc566a5bbfa1378d6266525c281b028abcc8.tar.bz2 coreclr-4b11dc566a5bbfa1378d6266525c281b028abcc8.zip |
Imported Upstream version 1.0.0.9910upstream/1.0.0.9910
Diffstat (limited to 'src/jit/codegenlinear.cpp')
-rw-r--r-- | src/jit/codegenlinear.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/jit/codegenlinear.cpp b/src/jit/codegenlinear.cpp index 9713288e08..329c4a755f 100644 --- a/src/jit/codegenlinear.cpp +++ b/src/jit/codegenlinear.cpp @@ -133,9 +133,8 @@ void CodeGen::genCodeForBBlist() */ BasicBlock* block; - BasicBlock* lblk; /* previous block */ - for (lblk = nullptr, block = compiler->fgFirstBB; block != nullptr; lblk = block, block = block->bbNext) + for (block = compiler->fgFirstBB; block != nullptr; block = block->bbNext) { #ifdef DEBUG if (compiler->verbose) @@ -284,7 +283,7 @@ void CodeGen::genCodeForBBlist() } #endif // We should never have a block that falls through into the Cold section - noway_assert(!lblk->bbFallsThrough()); + noway_assert(!block->bbPrev->bbFallsThrough()); // We require the block that starts the Cold section to have a label noway_assert(block->bbEmitCookie); @@ -602,7 +601,7 @@ void CodeGen::genCodeForBBlist() break; case BBJ_CALLFINALLY: - block = genCallFinally(block, lblk); + block = genCallFinally(block); break; #if FEATURE_EH_FUNCLETS @@ -906,6 +905,13 @@ void CodeGen::genUnspillRegIfNeeded(GenTree* tree) // Load local variable from its home location. inst_RV_TT(ins, dstReg, unspillTree, 0, attr); +#elif defined(_TARGET_ARM_) + var_types targetType = unspillTree->gtType; + instruction ins = ins_Load(targetType, compiler->isSIMDTypeLocalAligned(lcl->gtLclNum)); + emitAttr attr = emitTypeSize(targetType); + + // Load local variable from its home location. + inst_RV_TT(ins, dstReg, unspillTree, 0, attr); #else NYI("Unspilling not implemented for this target architecture."); #endif @@ -1203,22 +1209,16 @@ void CodeGen::genConsumeRegs(GenTree* tree) } #endif // !defined(_TARGET_64BIT_) - if (tree->isContained()) + if (tree->isUsedFromSpillTemp()) { - if (tree->isContainedSpillTemp()) - { - // spill temps are un-tracked and hence no need to update life - } - else if (tree->isIndir()) + // spill temps are un-tracked and hence no need to update life + } + else if (tree->isContained()) + { + if (tree->isIndir()) { genConsumeAddress(tree->AsIndir()->Addr()); } - else if (tree->OperGet() == GT_AND) - { - // This is the special contained GT_AND that we created in Lowering::TreeNodeInfoInitCmp() - // Now we need to consume the operands of the GT_AND node. - genConsumeOperands(tree->AsOp()); - } #ifdef _TARGET_XARCH_ else if (tree->OperGet() == GT_LCL_VAR) { |