From ed9f42361e2f07a79fde39ded9e57473d5fac39f Mon Sep 17 00:00:00 2001 From: Lujin Wang <143145775+lujinwangnv@users.noreply.github.com> Date: Thu, 18 Sep 2025 10:37:14 -0700 Subject: 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 Co-authored-by: Claude Code Co-authored-by: slangbot Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --- source/slang/slang-emit-spirv.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-emit-spirv.cpp') diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index f82bf24c1..18c54587a 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -2297,7 +2297,9 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex auto moduleInst = inst->getModule()->getModuleInst(); if (!m_defaultDebugSource) m_defaultDebugSource = debugSource; - if (!m_mapIRInstToSpvDebugInst.containsKey(moduleInst)) + // Only create DebugCompilationUnit for non-included files + auto isIncludedFile = as(debugSource->getIsIncludedFile())->getValue(); + if (!m_mapIRInstToSpvDebugInst.containsKey(moduleInst) && !isIncludedFile) { IRBuilder builder(inst); builder.setInsertBefore(inst); -- cgit v1.2.3