diff options
Diffstat (limited to 'source/slang/slang-ir-lower-generic-function.cpp')
| -rw-r--r-- | source/slang/slang-ir-lower-generic-function.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/slang/slang-ir-lower-generic-function.cpp b/source/slang/slang-ir-lower-generic-function.cpp index e45b20563..12be27f07 100644 --- a/source/slang/slang-ir-lower-generic-function.cpp +++ b/source/slang/slang-ir-lower-generic-function.cpp @@ -28,14 +28,18 @@ namespace Slang auto genericParent = as<IRGeneric>(genericValue); SLANG_ASSERT(genericParent); SLANG_ASSERT(genericParent->getDataType()); - auto func = as<IRFunc>(findGenericReturnVal(genericParent)); + auto genericRetVal = findGenericReturnVal(genericParent); + auto func = as<IRFunc>(genericRetVal); if (!func) { // Nested generic functions are supposed to be flattened before entering // this pass. The reason we are still seeing them must be that they are // intrinsic functions. In this case we ignore the function. - SLANG_ASSERT(findInnerMostGenericReturnVal(genericParent) - ->findDecoration<IRTargetIntrinsicDecoration>() != nullptr); + if (as<IRGeneric>(genericRetVal)) + { + SLANG_ASSERT(findInnerMostGenericReturnVal(genericParent) + ->findDecoration<IRTargetIntrinsicDecoration>() != nullptr); + } return genericValue; } SLANG_ASSERT(func); |
