summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-link.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-link.cpp')
-rw-r--r--source/slang/slang-ir-link.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/slang/slang-ir-link.cpp b/source/slang/slang-ir-link.cpp
index eb660c8a7..5bb485b22 100644
--- a/source/slang/slang-ir-link.cpp
+++ b/source/slang/slang-ir-link.cpp
@@ -1830,12 +1830,16 @@ LinkedIR linkIR(
}
}
+ bool shouldCopyGlobalParams = linkage->m_optionSet.getBoolOption(CompilerOptionName::PreserveParameters);
+
for (IRModule* irModule : irModules)
{
for (auto inst : irModule->getGlobalInsts())
{
- // Is it (HLSL) `export` clone
- if (_isHLSLExported(inst))
+ // We need to copy over exported symbols,
+ // and any global parameters if preserve-params option is set.
+ if (_isHLSLExported(inst) ||
+ shouldCopyGlobalParams && as<IRGlobalParam>(inst))
{
auto cloned = cloneValue(context, inst);
if (!cloned->findDecorationImpl(kIROp_KeepAliveDecoration))