diff options
Diffstat (limited to 'source/slang/slang-emit-spirv.cpp')
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index 92fa507e0..63ebfcf6e 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -7964,6 +7964,8 @@ SlangResult emitSPIRVFromIR( { spirvOut.clear(); + bool symbolsEmitted = false; + auto sink = codeGenContext->getSink(); #if 0 @@ -8008,6 +8010,7 @@ SlangResult emitSPIRVFromIR( if (shouldPreserveParams && as<IRGlobalParam>(inst)) { context.ensureInst(inst); + symbolsEmitted = true; } if (generateWholeProgram) { @@ -8016,6 +8019,7 @@ SlangResult emitSPIRVFromIR( if (func->findDecoration<IRDownstreamModuleExportDecoration>()) { context.ensureInst(inst); + symbolsEmitted = true; } } } @@ -8046,8 +8050,14 @@ SlangResult emitSPIRVFromIR( for (auto irEntryPoint : irEntryPoints) { context.ensureInst(irEntryPoint); + symbolsEmitted = true; } + if (!symbolsEmitted) + { + sink->diagnose(irModule->getModuleInst(), Diagnostics::outputSpvIsEmpty); + return SLANG_FAIL; + } // Move forward delcared pointers to the end. do |
