summaryrefslogtreecommitdiffstats
path: root/source/slang/ir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/ir.cpp')
-rw-r--r--source/slang/ir.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/source/slang/ir.cpp b/source/slang/ir.cpp
index 5cc73a36b..84ab3d9a5 100644
--- a/source/slang/ir.cpp
+++ b/source/slang/ir.cpp
@@ -562,6 +562,16 @@ namespace Slang
return irValue;
}
+ IRValue * IRBuilder::getTypeVal(IRType * type)
+ {
+ auto irValue = createValue<IRDeclRef>(
+ this,
+ kIROp_TypeType,
+ nullptr);
+ irValue->type = type;
+ return irValue;
+ }
+
IRValue* IRBuilder::emitSpecializeInst(
Type* type,
IRValue* genericVal,
@@ -3061,7 +3071,12 @@ namespace Slang
return builder->getDeclRefVal(declRef);
}
break;
-
+ case kIROp_TypeType:
+ {
+ IRValue* od = (IRValue*)originalValue;
+ return builder->getTypeVal(od->type);
+ }
+ break;
default:
SLANG_UNEXPECTED("no value registered for IR value");
return nullptr;