summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-03-05 13:11:17 -0800
committerGitHub <noreply@github.com>2024-03-05 13:11:17 -0800
commitf2e325758ba4aae40dd15689f3d3c8a090ef2603 (patch)
tree2ac21b409b5b7038afaa0a4bfeccdc92c11adef1
parent8d4b659b4d95fb72f4c483f6327acd60b44268bc (diff)
[slangc] generate an error when `-entry` is not specified for targets that require them. (#3679)
* [slangc] generate an error when `-entry` is not specified for targets that require them. * Fix. * Fix.
-rw-r--r--source/slang/slang-options.cpp8
-rw-r--r--tests/diagnostics/vk-bindings.slang2
2 files changed, 8 insertions, 2 deletions
diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp
index 5e009c46e..6b56d5600 100644
--- a/source/slang/slang-options.cpp
+++ b/source/slang/slang-options.cpp
@@ -2822,8 +2822,14 @@ SlangResult OptionsParser::_parse(
if (getCurrentTarget()->optionSet.shouldEmitSPIRVDirectly())
{
rawOutput.isWholeProgram = true;
+ break;
}
- break;
+ else if (m_rawEntryPoints.getCount() != 0)
+ {
+ rawOutput.entryPointIndex = (int)m_rawEntryPoints.getCount() - 1;
+ break;
+ }
+ [[fallthrough]];
default:
m_sink->diagnose(SourceLoc(), Diagnostics::cannotMatchOutputFileToEntryPoint, rawOutput.path);
break;
diff --git a/tests/diagnostics/vk-bindings.slang b/tests/diagnostics/vk-bindings.slang
index c0a3ca7f8..53766536d 100644
--- a/tests/diagnostics/vk-bindings.slang
+++ b/tests/diagnostics/vk-bindings.slang
@@ -1,6 +1,6 @@
// vk-bindings.slang
-//DIAGNOSTIC_TEST:SIMPLE:-target spirv
+//DIAGNOSTIC_TEST:SIMPLE:-entry main -target spirv
// D3D `register` without VK binding
Texture2D t : register(t0);