diff options
| author | Yong He <yonghe@outlook.com> | 2024-12-09 04:48:03 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-09 20:48:03 +0800 |
| commit | 09a9d673322ebf4ca2fcb7d48f13a44e015ea33f (patch) | |
| tree | 8bae8fa5718669dcbff98b8bcb29784483905f34 /source/slang/slang-ir-lower-buffer-element-type.cpp | |
| parent | 051ae8acec0a641bcaf86e7eeff35eff29e8922d (diff) | |
Allow pointers to existential values. (#5793)
* Fix pointer offset logic and add executable tests.
* Fix.
* Fix test.
* Add existential ptr test.
* Allow pointers to existential values.
* Fix.
* Fix.
---------
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-lower-buffer-element-type.cpp')
| -rw-r--r-- | source/slang/slang-ir-lower-buffer-element-type.cpp | 22 |
1 files changed, 0 insertions, 22 deletions
diff --git a/source/slang/slang-ir-lower-buffer-element-type.cpp b/source/slang/slang-ir-lower-buffer-element-type.cpp index bd3e350bc..dd62ca02c 100644 --- a/source/slang/slang-ir-lower-buffer-element-type.cpp +++ b/source/slang/slang-ir-lower-buffer-element-type.cpp @@ -901,28 +901,6 @@ struct LoweredElementTypeContext { builder.setInsertBefore(ptrVal); auto newArrayPtrVal = fieldAddr->getBase(); - // Is base a pointer to an empty struct? If so, don't offset it. - // For example, if the user has written: - // ``` - // struct S {int arr[]}; - // uniform S* p; - // void test() { p->arr[1]; } - // ``` - // Then `S` will become an empty struct after we remove `arr[]`. - // And `p` will be come a `void*`. - // We don't want to offset `p` to `p+1` to get the starting address of - // the array in this case. - IRSizeAndAlignment parentStructSize = {}; - getNaturalSizeAndAlignment( - target->getOptionSet(), - tryGetPointedToType(&builder, fieldAddr->getBase()->getDataType()), - &parentStructSize); - if (parentStructSize.size != 0) - { - newArrayPtrVal = builder.emitGetOffsetPtr( - fieldAddr->getBase(), - builder.getIntValue(builder.getIntType(), 1)); - } auto loweredInnerType = getLoweredTypeInfo(unsizedArrayType->getElementType(), layoutRules); |
