summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-legalize-empty-array.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-06-13 17:06:05 -0700
committerGitHub <noreply@github.com>2025-06-13 17:06:05 -0700
commit84148b80b167f5102e5f4813671b97bc1faeb5f0 (patch)
tree46efe753a0e87cb9c826cd55b85c36cb766fccc8 /source/slang/slang-ir-legalize-empty-array.cpp
parent1d8f6f86d1a6d33ff6e6429206b94d72457e1378 (diff)
Fix a bug in empty array legalization. (#7444)
Diffstat (limited to 'source/slang/slang-ir-legalize-empty-array.cpp')
-rw-r--r--source/slang/slang-ir-legalize-empty-array.cpp8
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)
{