From d5d07054401c8622ed3380f00488e279878fe9f1 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Wed, 19 Nov 2025 09:33:25 +0100 Subject: [PATCH 1/2] clear contained flag in sign test optimization --- src/coreclr/jit/lower.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp index 76e445737b86d5..516e332f1e6ab0 100644 --- a/src/coreclr/jit/lower.cpp +++ b/src/coreclr/jit/lower.cpp @@ -4566,11 +4566,12 @@ GenTree* Lowering::LowerJTrue(GenTreeOp* jtrue) if (relopOp1->OperIs(GT_CAST)) { GenTreeCast* cast = relopOp1->AsCast(); - if ((cast->gtCastType == TYP_BYTE || cast->gtCastType == TYP_SHORT) && !cast->gtOverflow()) + if ((cast->CastToType() == TYP_BYTE || cast->CastToType() == TYP_SHORT) && !cast->gtOverflow()) { op1Type = cast->gtCastType; GenTree* castOp = cast->CastOp(); cond->AsOp()->gtOp1 = castOp; + castOp->ClearContained(); BlockRange().Remove(cast); relopOp1 = castOp; } From cd2bd8bd9c23ea177411f09da4008f335a586535 Mon Sep 17 00:00:00 2001 From: Egor Bogatov Date: Wed, 19 Nov 2025 09:37:03 +0100 Subject: [PATCH 2/2] Update src/coreclr/jit/lower.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/coreclr/jit/lower.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp index 516e332f1e6ab0..df8be988ed4a11 100644 --- a/src/coreclr/jit/lower.cpp +++ b/src/coreclr/jit/lower.cpp @@ -4568,7 +4568,7 @@ GenTree* Lowering::LowerJTrue(GenTreeOp* jtrue) GenTreeCast* cast = relopOp1->AsCast(); if ((cast->CastToType() == TYP_BYTE || cast->CastToType() == TYP_SHORT) && !cast->gtOverflow()) { - op1Type = cast->gtCastType; + op1Type = cast->CastToType(); GenTree* castOp = cast->CastOp(); cond->AsOp()->gtOp1 = castOp; castOp->ClearContained();