diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-emit.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index 6725ac3de..e1689ccfc 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -1264,10 +1264,17 @@ Result linkAndOptimizeIR( legalizeEmptyArray(irModule, sink); + // For CUDA targets, always inline global constants to avoid dynamic initialization + // of __device__ variables rejected by NVRTC. This runs independently of the broader + // resource/existential type legalization, which remains disabled for CUDA. + if (target == CodeGenTarget::CUDASource || options.shouldLegalizeExistentialAndResourceTypes) + { + inlineGlobalConstantsForLegalization(irModule); + } + // We don't need the legalize pass for C/C++ based types if (options.shouldLegalizeExistentialAndResourceTypes) { - inlineGlobalConstantsForLegalization(irModule); // The Slang language allows interfaces to be used like // ordinary types (including placing them in constant |
