From accde43eb68acdf0c2aa1c1facd02ec7686bd20a Mon Sep 17 00:00:00 2001 From: Jakob Botsch Nielsen Date: Sun, 3 Dec 2023 18:47:56 +0100 Subject: [PATCH] JIT: Check for reachable preds in RBO Nothing guarantees that all preds are reachable, in which case the "dominates" query does not make sense. --- src/coreclr/jit/redundantbranchopts.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/jit/redundantbranchopts.cpp b/src/coreclr/jit/redundantbranchopts.cpp index 612fa1ef1beb3f..c542c99cb52385 100644 --- a/src/coreclr/jit/redundantbranchopts.cpp +++ b/src/coreclr/jit/redundantbranchopts.cpp @@ -818,7 +818,7 @@ bool Compiler::optJumpThreadCheck(BasicBlock* const block, BasicBlock* const dom { for (BasicBlock* const predBlock : block->PredBlocks()) { - if (!fgSsaDomTree->Dominates(domBlock, predBlock)) + if (m_dfs->Contains(predBlock) && !fgSsaDomTree->Dominates(domBlock, predBlock)) { JITDUMP("Dom " FMT_BB " is stale (does not dominate pred " FMT_BB "); no threading\n", domBlock->bbNum, predBlock->bbNum);