summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-legalize-types.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/source/slang/slang-legalize-types.cpp b/source/slang/slang-legalize-types.cpp
index 9c79e3167..6d827a412 100644
--- a/source/slang/slang-legalize-types.cpp
+++ b/source/slang/slang-legalize-types.cpp
@@ -487,8 +487,13 @@ struct TupleTypeBuilder
fieldType = context->getBuilder()->getVoidType();
// TODO: shallow clone of modifiers, etc.
-
- builder->createStructField(ordinaryStructType, ee.fieldKey, fieldType);
+ IRStructField* originalField = findStructField(originalStructType, ee.fieldKey);
+ IRStructField* newField =
+ builder->createStructField(ordinaryStructType, ee.fieldKey, fieldType);
+ // In case the original struct had offset decorations attached, transfer those as
+ // well. The original offsets should still be valid, since we only skip fields of
+ // types that aren't representable in memory.
+ originalField->transferDecorationsTo(newField);
}
ordinaryType = LegalType::simple((IRType*)ordinaryStructType);