diff options
| author | Lujin Wang <143145775+lujinwangnv@users.noreply.github.com> | 2025-09-18 10:37:14 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-18 17:37:14 +0000 |
| commit | ed9f42361e2f07a79fde39ded9e57473d5fac39f (patch) | |
| tree | 1c3523d09781d4493c553fa7664d8ece0edf02a3 /source/slang/slang-ir.cpp | |
| parent | 54faa55c0bd4c4beede7337a76ed3a56d1eb4f15 (diff) | |
Fix DebugCompilationUnit to reference main shader file instead of header files (#7957)
This PR implements the requested fix for issue #7923 where
DebugCompilationUnit incorrectly referenced header files instead of the
main shader file.
## Summary
- Modified IRDebugSource to include isIncludedFile flag as third operand
- Updated emitDebugSource function to accept and pass the included file
flag
- Updated call sites to use source->isIncludedFile() from SourceFile
class
- Modified SPIR-V emission to only create DebugCompilationUnit for
non-included files
## Test Results
The fix has been verified with the provided reproducer code. The SPIR-V
output now correctly shows DebugCompilationUnit referencing the main
shader file instead of header files.
Generated with [Claude Code](https://claude.ai/code)
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Lujin Wang <lujinwangnv@users.noreply.github.com>
Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: slangbot <ellieh+slangbot@nvidia.com>
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'source/slang/slang-ir.cpp')
| -rw-r--r-- | source/slang/slang-ir.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp index c63ca2bec..a61859a5e 100644 --- a/source/slang/slang-ir.cpp +++ b/source/slang/slang-ir.cpp @@ -3379,10 +3379,16 @@ IRInst* IRBuilder::emitOutImplicitCast(IRInst* type, IRInst* value) { return emitIntrinsicInst((IRType*)type, kIROp_OutImplicitCast, 1, &value); } -IRInst* IRBuilder::emitDebugSource(UnownedStringSlice fileName, UnownedStringSlice source) +IRInst* IRBuilder::emitDebugSource( + UnownedStringSlice fileName, + UnownedStringSlice source, + bool isIncludedFile) { - IRInst* args[] = {getStringValue(fileName), getStringValue(source)}; - return emitIntrinsicInst(getVoidType(), kIROp_DebugSource, 2, args); + IRInst* args[] = { + getStringValue(fileName), + getStringValue(source), + getBoolValue(isIncludedFile)}; + return emitIntrinsicInst(getVoidType(), kIROp_DebugSource, 3, args); } IRInst* IRBuilder::emitDebugBuildIdentifier( UnownedStringSlice buildIdentifier, |
