From 0f2578d7b3e75c0e5ef724ffe610d004fb116a03 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 7 Nov 2023 19:03:52 -0800 Subject: Add `IRThisTypeWitness` to stand in for witness lookups inside an interface definition. (#3316) Co-authored-by: Yong He --- source/slang/slang-ir.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'source/slang/slang-ir.cpp') diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp index 2f603ac17..c40a62941 100644 --- a/source/slang/slang-ir.cpp +++ b/source/slang/slang-ir.cpp @@ -4381,6 +4381,17 @@ namespace Slang return entry; } + IRInst* IRBuilder::createThisTypeWitness(IRType* interfaceType) + { + IRInst* witness = createInst( + this, + kIROp_ThisTypeWitness, + getWitnessTableType(interfaceType)); + addGlobalValue(this, witness); + return witness; + } + + IRStructType* IRBuilder::createStructType() { IRStructType* structType = createInst( @@ -7691,6 +7702,7 @@ namespace Slang case kIROp_GlobalParam: case kIROp_StructKey: case kIROp_GlobalGenericParam: + case kIROp_ThisTypeWitness: case kIROp_WitnessTable: case kIROp_WitnessTableEntry: case kIROp_InterfaceRequirementEntry: -- cgit v1.2.3