From ff43a803a814eaaa5eba02cafa4a91def3e4c7be Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Mon, 1 Apr 2019 08:37:03 -0700 Subject: [PATCH] Enable negative type-check results in CoreLib version bubble (#23549) This negative type-check results are necessary to generate good code for AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted --- src/vm/jitinterface.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vm/jitinterface.cpp b/src/vm/jitinterface.cpp index b3ede3b..7c5a557 100644 --- a/src/vm/jitinterface.cpp +++ b/src/vm/jitinterface.cpp @@ -4629,8 +4629,10 @@ TypeCompareState CEEInfo::compareTypesForCast( // In R2R it is a breaking change for a previously positive // cast to become negative, but not for a previously negative // cast to become positive. So in R2R a negative result is - // always reported back as May. - if (IsReadyToRunCompilation() && (result == TypeCompareState::MustNot)) + // always reported back as May, except for CoreLib version bubble. + if (IsReadyToRunCompilation() && (result == TypeCompareState::MustNot) + && !GetAppDomain()->ToCompilationDomain()->GetTargetModule()->IsSystem() + && !IsLargeVersionBubbleEnabled()) { result = TypeCompareState::May; } -- 2.7.4