summaryrefslogtreecommitdiffstats
path: root/source/slang
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/slang-compiler.h4
-rw-r--r--source/slang/slang-emit.cpp3
-rw-r--r--source/slang/slang-options.cpp4
3 files changed, 10 insertions, 1 deletions
diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h
index f8843fadc..26648ed48 100644
--- a/source/slang/slang-compiler.h
+++ b/source/slang/slang-compiler.h
@@ -1759,6 +1759,10 @@ namespace Slang
/// Should SPIR-V be generated directly from Slang IR rather than via translation to GLSL?
bool shouldEmitSPIRVDirectly = false;
+
+ // If true will allow generating dynamic dispatch code for generics.
+ bool allowDynamicCode = false;
+
String m_dumpIntermediatePrefix;
private:
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index 12996e783..3e0d6ae26 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -270,7 +270,8 @@ Result linkAndOptimizeIR(
// perform specialization of functions based on parameter
// values that need to be compile-time constants.
//
- specializeModule(irModule);
+ if (!compileRequest->allowDynamicCode)
+ specializeModule(irModule);
// Debugging code for IR transformations...
#if 0
diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp
index 89fe03255..5bf0c6c9d 100644
--- a/source/slang/slang-options.cpp
+++ b/source/slang/slang-options.cpp
@@ -557,6 +557,10 @@ struct OptionsParser
{
requestImpl->getFrontEndReq()->useSerialIRBottleneck = true;
}
+ else if (argStr == "-allow-dynamic-code")
+ {
+ requestImpl->getBackEndReq()->allowDynamicCode = true;
+ }
else if (argStr == "-verbose-paths")
{
requestImpl->getSink()->setFlag(DiagnosticSink::Flag::VerbosePath);