diff options
| author | Yong He <yonghe@outlook.com> | 2021-04-16 10:34:26 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-16 10:34:26 -0700 |
| commit | 79e92395f8ce3d92c446e3bb3250d19ce33decd5 (patch) | |
| tree | 2ac277fa299200da72cf03a2b5b96338f66aee5d /source/slang/slang-ir-lower-generic-function.cpp | |
| parent | bad484d838590d0a2aaf1b5b8ac820634af2decb (diff) | |
Update `model-viewer` example and fixing compiler bugs. (#1795)
Diffstat (limited to 'source/slang/slang-ir-lower-generic-function.cpp')
| -rw-r--r-- | source/slang/slang-ir-lower-generic-function.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/slang/slang-ir-lower-generic-function.cpp b/source/slang/slang-ir-lower-generic-function.cpp index 6e9754744..8cd292e49 100644 --- a/source/slang/slang-ir-lower-generic-function.cpp +++ b/source/slang/slang-ir-lower-generic-function.cpp @@ -26,6 +26,7 @@ namespace Slang return genericValue; auto genericParent = as<IRGeneric>(genericValue); SLANG_ASSERT(genericParent); + SLANG_ASSERT(genericParent->getDataType()); auto func = as<IRFunc>(findGenericReturnVal(genericParent)); if (!func) { @@ -37,7 +38,8 @@ namespace Slang return genericValue; } SLANG_ASSERT(func); - if (!func->isDefinition()) + // Do not lower intrinsic functions. + if (!func->isDefinition() || func->findDecoration<IRTargetIntrinsicDecoration>()) { sharedContext->loweredGenericFunctions[genericValue] = genericValue; return genericValue; @@ -47,7 +49,10 @@ namespace Slang builder.sharedBuilder = &sharedContext->sharedBuilderStorage; builder.setInsertBefore(genericParent); auto loweredFunc = cast<IRFunc>(cloneInstAndOperands(&cloneEnv, &builder, func)); - loweredFunc->setFullType(lowerGenericFuncType(&builder, cast<IRGeneric>(genericParent->getFullType()))); + auto loweredGenericType = + lowerGenericFuncType(&builder, cast<IRGeneric>(genericParent->getFullType())); + SLANG_ASSERT(loweredGenericType); + loweredFunc->setFullType(loweredGenericType); List<IRInst*> clonedParams; for (auto genericChild : genericParent->getFirstBlock()->getChildren()) |
