summaryrefslogtreecommitdiff
path: root/source/slang/lower-to-ir.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-08-17 14:51:09 -0700
committerTim Foley <tfoley@nvidia.com>2017-08-17 14:51:09 -0700
commitec8175c1f0afe3f7758f70da240aba03a791c3a9 (patch)
tree53a6a509f3bba87d964ba3a5007b538db1d83a4e /source/slang/lower-to-ir.cpp
parent95348fdb623509eb22c04d4c7c19af8228c5a533 (diff)
[ir] Add support for "decorations" on instructions
The terminology here is similar to SPIR-V. For right now the only decoration exposed is a fairly brute-force one that just points back to a high-level declaration so that we can look up info on it that might affect how we print output.
Diffstat (limited to 'source/slang/lower-to-ir.cpp')
-rw-r--r--source/slang/lower-to-ir.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/slang/lower-to-ir.cpp b/source/slang/lower-to-ir.cpp
index 5d0a40072..781209dce 100644
--- a/source/slang/lower-to-ir.cpp
+++ b/source/slang/lower-to-ir.cpp
@@ -562,6 +562,8 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo>
auto irField = builder->createStructField(getSimpleType(fieldType));
builder->addInst(irStruct, irField);
+ builder->addHighLevelDeclDecoration(irField, fieldDecl);
+
context->shared->declValues.Add(
DeclRef<StructField>(fieldDecl, nullptr),
LoweredValInfo::simple(irField));
@@ -573,6 +575,7 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo>
}
}
+ builder->addHighLevelDeclDecoration(irStruct, decl);
builder->addInst(irStruct);
@@ -624,6 +627,8 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo>
lowerStmt(subContext, decl->Body);
+ getBuilder()->addHighLevelDeclDecoration(irFunc, decl);
+
getBuilder()->addInst(irFunc);
return LoweredValInfo::simple(irFunc);