From caf46421fcc6792dd2ab991752b6a97b44ba0431 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 1 Sep 2021 16:00:06 -0700 Subject: Bug fix for createDynamicObject (#1927) Co-authored-by: Yong He --- source/slang/slang-ir-lower-existential.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'source') diff --git a/source/slang/slang-ir-lower-existential.cpp b/source/slang/slang-ir-lower-existential.cpp index ac46fa46f..7cbb1b372 100644 --- a/source/slang/slang-ir-lower-existential.cpp +++ b/source/slang/slang-ir-lower-existential.cpp @@ -65,7 +65,11 @@ namespace Slang auto anyValueType = cast(tupleType->getOperand(2)); // Create a null value for `rttiObject` for now since it will not be used. - IRInst* rttiObject = builder->getIntValue(builder->getIntType(), 0); + auto uint2Type = builder->getVectorType( + builder->getUIntType(), builder->getIntValue(builder->getIntType(), 2)); + IRInst* zero = builder->getIntValue(builder->getUIntType(), 0); + IRInst* zeroVectorArgs[] = { zero, zero }; + IRInst* rttiObject = builder->emitMakeVector(uint2Type, 2, zeroVectorArgs); // Pack the user provided value into `AnyValue`. IRInst* packedValue = inst->getValue(); @@ -78,8 +82,7 @@ namespace Slang // a `uint2` value from `typeID` to stay consistent with the convention. IRInst* vectorArgs[2] = { inst->getTypeID(), builder->getIntValue(builder->getUIntType(), 0)}; - auto uint2Type = builder->getVectorType( - builder->getUIntType(), builder->getIntValue(builder->getIntType(), 2)); + IRInst* typeIdValue = builder->emitMakeVector(uint2Type, 2, vectorArgs); typeIdValue = builder->emitBitCast(witnessTableIdType, typeIdValue); IRInst* tupleArgs[] = {rttiObject, typeIdValue, packedValue}; -- cgit v1.2.3