diff --git a/src/coreclr/jit/fgehopt.cpp b/src/coreclr/jit/fgehopt.cpp index 06abf455ac2df1..18cb78ac12e612 100644 --- a/src/coreclr/jit/fgehopt.cpp +++ b/src/coreclr/jit/fgehopt.cpp @@ -99,6 +99,14 @@ PhaseStatus Compiler::fgRemoveEmptyFinally() continue; } + // If the finally's block jumps back to itself, then it is not empty. + if ((firstBlock->bbJumpKind == BBJ_ALWAYS) && firstBlock->bbJumpDest == firstBlock) + { + JITDUMP("EH#%u finally has basic block that jumps to itself; skipping.\n", XTnum); + XTnum++; + continue; + } + // Limit for now to finallys that contain only a GT_RETFILT. bool isEmpty = true; diff --git a/src/coreclr/jit/jiteh.cpp b/src/coreclr/jit/jiteh.cpp index da431dd82e2de9..12e91d077690ba 100644 --- a/src/coreclr/jit/jiteh.cpp +++ b/src/coreclr/jit/jiteh.cpp @@ -4410,7 +4410,7 @@ void Compiler::fgExtendEHRegionBefore(BasicBlock* block) #endif // DEBUG // The first block of a handler has an artificial extra refcount. Transfer that to the new block. - assert(block->bbRefs > 0); + noway_assert(block->countOfInEdges() > 0); block->bbRefs--; HBtab->ebdHndBeg = bPrev; @@ -4459,7 +4459,7 @@ void Compiler::fgExtendEHRegionBefore(BasicBlock* block) #endif // DEBUG // The first block of a filter has an artificial extra refcount. Transfer that to the new block. - assert(block->bbRefs > 0); + noway_assert(block->countOfInEdges() > 0); block->bbRefs--; HBtab->ebdFilter = bPrev;