summaryrefslogtreecommitdiffstats
path: root/source/slang/ir.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2017-11-01 13:16:26 -0400
committerYong He <yonghe@outlook.com>2017-11-01 13:16:26 -0400
commit134354c68768c0e3530c02678e12cb02f5646e8a (patch)
tree20a9ae10db6790ddc5032315b85efd94fc672cff /source/slang/ir.cpp
parentb623864fe609e6912cdd2e350aa70cf7e441e1d3 (diff)
Adding support for associated types.
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;