diff --git a/src/coreclr/jit/lsra.cpp b/src/coreclr/jit/lsra.cpp index c57ae36038e8d..0854e4a90b19e 100644 --- a/src/coreclr/jit/lsra.cpp +++ b/src/coreclr/jit/lsra.cpp @@ -2457,13 +2457,17 @@ BasicBlock* LinearScan::findPredBlockForLiveIn(BasicBlock* block, } else { - for (BasicBlock* const candidatePredBlock : block->PredBlocks()) + FlowEdge* hottestPred = nullptr; + for (FlowEdge* const candidatePredEdge : block->PredEdges()) { + BasicBlock* const candidatePredBlock = candidatePredEdge->getSourceBlock(); if (isBlockVisited(candidatePredBlock)) { - if ((predBlock == nullptr) || (predBlock->bbWeight < candidatePredBlock->bbWeight)) + if ((hottestPred == nullptr) || + (hottestPred->getLikelyWeight() < candidatePredEdge->getLikelyWeight())) { - predBlock = candidatePredBlock; + hottestPred = candidatePredEdge; + predBlock = candidatePredBlock; INDEBUG(*pPredBlockIsAllocated = true;) } }