summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-stdlib.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-06-01 13:53:31 -0700
committerGitHub <noreply@github.com>2023-06-01 13:53:31 -0700
commit16cd361dd67471bcc355d1b3b72b0b022518088f (patch)
treefa3a7d5b77ccf09f9340b78e66610ba8b751c855 /source/slang/slang-stdlib.cpp
parenta7ed48b2e6da9bf952aa11ec0d57acf9688bbb0e (diff)
Be lenient on same-size unsigend->signed conversion. (#2913)
* Be lenient on same-size unsigend->signed conversion. * Fix tests. * Use 250. * wip * Fix. * Fix tests. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-stdlib.cpp')
-rw-r--r--source/slang/slang-stdlib.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/slang/slang-stdlib.cpp b/source/slang/slang-stdlib.cpp
index 1f8d0a97a..a31c77985 100644
--- a/source/slang/slang-stdlib.cpp
+++ b/source/slang/slang-stdlib.cpp
@@ -156,6 +156,15 @@ namespace Slang
{
return kConversionCost_UnsignedToSignedPromotion;
}
+ // Same-size unsigned to signed integer conversion.
+ else if (toInfo.conversionKind == kBaseTypeConversionKind_Signed
+ && fromInfo.conversionKind == kBaseTypeConversionKind_Unsigned
+ && toInfo.conversionRank == fromInfo.conversionRank
+ && toInfo.conversionRank != kBaseTypeConversionRank_IntPtr
+ && fromInfo.conversionRank != kBaseTypeConversionRank_IntPtr)
+ {
+ return kConversionCost_SameSizeUnsignedToSignedConversion;
+ }
// Conversion from signed to unsigned is always lossy,
// but it is preferred over conversions from unsigned