From 809ae785d260268c9e259ba70487b7443d5fccda Mon Sep 17 00:00:00 2001 From: Jakob Botsch Nielsen Date: Wed, 7 Feb 2024 16:51:27 +0100 Subject: [PATCH] JIT: Generalize jump threading very slightly If the dominator is a direct predecessor then it should be ok to jump thread its direct edge, even if the other edge also reaches. --- src/coreclr/jit/redundantbranchopts.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/coreclr/jit/redundantbranchopts.cpp b/src/coreclr/jit/redundantbranchopts.cpp index edcbf341526449..3ea6142de4cd3f 100644 --- a/src/coreclr/jit/redundantbranchopts.cpp +++ b/src/coreclr/jit/redundantbranchopts.cpp @@ -1258,10 +1258,10 @@ bool Compiler::optJumpThreadDom(BasicBlock* const block, BasicBlock* const domBl continue; } - const bool isTruePred = ((predBlock == domBlock) && (domTrueSuccessor == block)) || - optReachable(domTrueSuccessor, predBlock, domBlock); - const bool isFalsePred = ((predBlock == domBlock) && (domFalseSuccessor == block)) || - optReachable(domFalseSuccessor, predBlock, domBlock); + const bool isTruePred = + (predBlock == domBlock) ? (domTrueSuccessor == block) : optReachable(domTrueSuccessor, predBlock, domBlock); + const bool isFalsePred = (predBlock == domBlock) ? (domFalseSuccessor == block) + : optReachable(domFalseSuccessor, predBlock, domBlock); if (isTruePred == isFalsePred) {