From ec55ac4217eb5a9eedacc09888c846cd4b3a5add Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 26 Aug 2020 15:05:59 -0700 Subject: Reorder existential tuple elements. (#1516) Co-authored-by: Tim Foley --- source/slang/slang-ir-generics-lowering-context.cpp | 2 +- source/slang/slang-ir-lower-existential.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/slang/slang-ir-generics-lowering-context.cpp b/source/slang/slang-ir-generics-lowering-context.cpp index 317532e8c..7e78bcfbd 100644 --- a/source/slang/slang-ir-generics-lowering-context.cpp +++ b/source/slang/slang-ir-generics-lowering-context.cpp @@ -164,7 +164,7 @@ namespace Slang auto anyValueType = builder->getAnyValueType(anyValueSize); auto witnessTableType = builder->getWitnessTableType((IRType*)paramType); auto rttiType = builder->getPtrType(builder->getRTTIType()); - auto tupleType = builder->getTupleType(anyValueType, witnessTableType, rttiType); + auto tupleType = builder->getTupleType(rttiType, witnessTableType, anyValueType); return tupleType; } case kIROp_lookup_interface_method: diff --git a/source/slang/slang-ir-lower-existential.cpp b/source/slang/slang-ir-lower-existential.cpp index 4078ad884..a6db2b781 100644 --- a/source/slang/slang-ir-lower-existential.cpp +++ b/source/slang/slang-ir-lower-existential.cpp @@ -25,7 +25,7 @@ namespace Slang auto anyValueSize = sharedContext->getInterfaceAnyValueSize(interfaceType, inst->sourceLoc); auto anyValueType = builder->getAnyValueType(anyValueSize); auto rttiType = builder->getPtrType(builder->getRTTIType()); - auto tupleType = builder->getTupleType(anyValueType, witnessTableType, rttiType); + auto tupleType = builder->getTupleType(rttiType, witnessTableType, anyValueType); IRInst* rttiObject = inst->getRTTI(); if (auto type = as(rttiObject)) @@ -36,7 +36,7 @@ namespace Slang IRInst* packedValue = value; if (valueType->op != kIROp_AnyValueType) packedValue = builder->emitPackAnyValue(anyValueType, value); - IRInst* tupleArgs[] = { packedValue, inst->getWitnessTable(), rttiObject }; + IRInst* tupleArgs[] = {rttiObject, inst->getWitnessTable(), packedValue}; auto tuple = builder->emitMakeTuple(tupleType, 3, tupleArgs); inst->replaceUsesWith(tuple); inst->removeAndDeallocate(); @@ -66,7 +66,7 @@ namespace Slang void processExtractExistentialValue(IRExtractExistentialValue* inst) { - processExtractExistentialElement(inst, 0); + processExtractExistentialElement(inst, 2); } void processExtractExistentialWitnessTable(IRExtractExistentialWitnessTable* inst) @@ -76,7 +76,7 @@ namespace Slang void processExtractExistentialType(IRExtractExistentialType* inst) { - processExtractExistentialElement(inst, 2); + processExtractExistentialElement(inst, 0); } void processInst(IRInst* inst) -- cgit v1.2.3