summaryrefslogtreecommitdiff
path: root/source/slang/ir-clone.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/ir-clone.cpp')
-rw-r--r--source/slang/ir-clone.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/source/slang/ir-clone.cpp b/source/slang/ir-clone.cpp
index df9cf2bf6..b648efec6 100644
--- a/source/slang/ir-clone.cpp
+++ b/source/slang/ir-clone.cpp
@@ -239,6 +239,25 @@ IRInst* cloneInst(
return newInst;
}
+void cloneDecoration(
+ IRDecoration* oldDecoration,
+ IRInst* newParent)
+{
+ SharedIRBuilder sharedBuilder;
+ sharedBuilder.module = newParent->getModule();
+
+ IRBuilder builder;
+ builder.sharedBuilder = &sharedBuilder;
+
+ if(auto first = newParent->getFirstDecorationOrChild())
+ builder.setInsertBefore(first);
+ else
+ builder.setInsertInto(newParent);
+
+ IRCloneEnv env;
+ cloneInst(&env, &builder, oldDecoration);
+}
+
bool IRSimpleSpecializationKey::operator==(IRSimpleSpecializationKey const& other) const
{
auto valCount = vals.Count();