diff options
| author | Yong He <yonghe@outlook.com> | 2025-02-05 22:35:36 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-05 22:35:36 -0800 |
| commit | 6b63ff0265ee9bdb8229bb12c71c223c00de0ffa (patch) | |
| tree | 8010accc99d1f5f20465e8eeb2012f37a6f5534f /source/slang/slang-lower-to-ir.cpp | |
| parent | 78f26f076d406a3818800b57afe4d0c2eb166269 (diff) | |
Allow tuples to work with initializer list. (#6301)
* Allow tuples to work with initiailizer list.
* Update definition of C-Style types.
Diffstat (limited to 'source/slang/slang-lower-to-ir.cpp')
| -rw-r--r-- | source/slang/slang-lower-to-ir.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp index cac157f9b..36003dcb2 100644 --- a/source/slang/slang-lower-to-ir.cpp +++ b/source/slang/slang-lower-to-ir.cpp @@ -4701,6 +4701,16 @@ struct ExprLoweringVisitorBase : public ExprVisitor<Derived, LoweredValInfo> { return LoweredValInfo::simple(getBuilder()->getNullPtrValue(irType)); } + else if (auto tupleType = as<TupleType>(type)) + { + List<IRInst*> args; + for (Index i = 0; i < tupleType->getMemberCount(); i++) + { + args.add(getSimpleVal(context, getDefaultVal(tupleType->getMember(i)))); + } + return LoweredValInfo::simple( + getBuilder()->emitMakeTuple(irType, args.getCount(), args.getBuffer())); + } else if (auto declRefType = as<DeclRefType>(type)) { DeclRef<Decl> declRef = declRefType->getDeclRef(); @@ -4925,9 +4935,16 @@ struct ExprLoweringVisitorBase : public ExprVisitor<Derived, LoweredValInfo> args.add(irDefaultValue); } } - - return LoweredValInfo::simple( - getBuilder()->emitMakeStruct(irType, args.getCount(), args.getBuffer())); + if (as<TupleType>(type)) + { + return LoweredValInfo::simple( + getBuilder()->emitMakeTuple(irType, args.getCount(), args.getBuffer())); + } + else + { + return LoweredValInfo::simple( + getBuilder()->emitMakeStruct(irType, args.getCount(), args.getBuffer())); + } } } |
