diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-ir-legalize-empty-array.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/slang/slang-ir-legalize-empty-array.cpp b/source/slang/slang-ir-legalize-empty-array.cpp index 561327565..1f7d59783 100644 --- a/source/slang/slang-ir-legalize-empty-array.cpp +++ b/source/slang/slang-ir-legalize-empty-array.cpp @@ -71,15 +71,17 @@ struct EmptyArrayLoweringContext [&](IRGetElementPtr* gep) { const auto base = gep->getBase(); - return hasEmptyArrayPtrType(base) || base->getOp() == kIROp_undefined + return hasEmptyArrayPtrType(gep) || hasEmptyArrayPtrType(base) || + base->getOp() == kIROp_undefined ? builder.emitUndefined(gep->getDataType()) : nullptr; }, [&](IRFieldAddress* gep) { const auto base = gep->getBase(); - return base->getOp() == kIROp_undefined ? builder.emitUndefined(gep->getDataType()) - : nullptr; + return hasEmptyArrayPtrType(gep) || base->getOp() == kIROp_undefined + ? builder.emitUndefined(gep->getDataType()) + : nullptr; }, [&](IRLoad* load) { |
