summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-emit.cpp')
-rw-r--r--source/slang/slang-emit.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index 02b5a44ed..260bee0ff 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -106,6 +106,7 @@
#include "slang-ir-strip-legalization-insts.h"
#include "slang-ir-synthesize-active-mask.h"
#include "slang-ir-translate-global-varying-var.h"
+#include "slang-ir-undo-param-copy.h"
#include "slang-ir-uniformity.h"
#include "slang-ir-user-type-hint.h"
#include "slang-ir-validate.h"
@@ -1594,6 +1595,13 @@ Result linkAndOptimizeIR(
case CodeGenTarget::Metal:
case CodeGenTarget::CPPSource:
case CodeGenTarget::CUDASource:
+ // For CUDA/OptiX like targets, add our pass to replace inout parameter copies with direct
+ // pointers
+ undoParameterCopy(irModule);
+#if 0
+ dumpIRIfEnabled(codeGenContext, irModule, "PARAMETER COPIES REPLACED WITH DIRECT POINTERS");
+#endif
+ validateIRModuleIfEnabled(codeGenContext, irModule);
moveGlobalVarInitializationToEntryPoints(irModule, targetProgram);
introduceExplicitGlobalContext(irModule, target);
if (target == CodeGenTarget::CPPSource)