diff options
Diffstat (limited to 'source/slang/slang-ir-link.cpp')
| -rw-r--r-- | source/slang/slang-ir-link.cpp | 8 |
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)) |
