summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorAnders Leino <aleino@nvidia.com>2025-03-05 08:16:29 +0200
committerGitHub <noreply@github.com>2025-03-05 06:16:29 +0000
commit5248a0254a48382d06ecb190c9f87c0ab62ff534 (patch)
tree4bc2abc4d4394083e0a45732226f34232756481b /source
parent6f56b473f4ab49dd6ec111b56cfc1701196f9c8c (diff)
Fix codegen bug when targeting PTX with new API (#6506)
* Add cuda codegen bug repro This just compiles tests/compute/simlpe.slang for PTX with the new compilation API, in order to reproduce a code generation bug. * Detect entrypoint more robustly when applying ConstRef hack during lowring For shaders like tests/compute/simple.slang, which have a 'numthreads' attribute but no 'shader' attribute, the old compile request API would add an EntryPointAttribute to the AST node of the entry point. However, the new API doesn't, and so a certain ConstRef hack doesn't get applied when using the new API, leading to subsequent code generation issues. This patch also checks for a 'numthreads' attribute when deciding whether to apply the ConstRef hack. This closes issue #6507 and helps to resolve issue #4760. * Add expected failure list for GitHub runners Our GitHub runners don't have the CUDA toolkits installed, so they can't run all tests.
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-lower-to-ir.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp
index e5ca77634..4d692b727 100644
--- a/source/slang/slang-lower-to-ir.cpp
+++ b/source/slang/slang-lower-to-ir.cpp
@@ -3214,7 +3214,8 @@ void collectParameterLists(
// For now we will rely on a follow up pass to remove unnecessary temporary variables if
// we can determine that they are never actually writtten to by the user.
//
- bool lowerVaryingInputAsConstRef = declRef.getDecl()->hasModifier<EntryPointAttribute>();
+ bool lowerVaryingInputAsConstRef = declRef.getDecl()->hasModifier<EntryPointAttribute>() ||
+ declRef.getDecl()->hasModifier<NumThreadsAttribute>();
// Don't collect parameters from the outer scope if
// we are in a `static` context.