From de6cc94e3b7fa5d1b8eeb53993dbf3ca2cec1cc1 Mon Sep 17 00:00:00 2001 From: cheneym2 Date: Thu, 20 Mar 2025 11:38:46 -0400 Subject: Add -dump-module command to slangc (#6638) * Add -dump-module command to slangc The new -dump-module command to slangc will load and disassemble a slang module, similar to what would be seen by the -dump-ir command, except that -dump-ir tells slangc to print IR as it performs some compilation command. That is, -dump-ir requires some larger compilation task. -dump-module on the otherhand requires no additional goal and will simply load a module and print its IR to stdout independently from other compilation steps. Its intended purpose is to inspect .slang-module files on disk. It can also be used on .slang files which will be parsed and lowered if slang does not find an associated ".slang-module" version of the module on disk. The compilation API is extended with a new IModule::disassemble() method which retrieves the string representation of the dumped IR. Closes #6599 * format code * Use FileStream not FILE * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Ellie Hermaszewska --- include/slang.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include') diff --git a/include/slang.h b/include/slang.h index 0507d8099..27fa95986 100644 --- a/include/slang.h +++ b/include/slang.h @@ -1015,6 +1015,7 @@ typedef uint32_t SlangSizeT; SaveGLSLModuleBinSource, SkipDownstreamLinking, // bool, experimental + DumpModule, CountOf, }; @@ -4422,6 +4423,11 @@ struct IModule : public IComponentType virtual SLANG_NO_THROW char const* SLANG_MCALL getDependencyFilePath(SlangInt32 index) = 0; virtual SLANG_NO_THROW DeclReflection* SLANG_MCALL getModuleReflection() = 0; + + /** Disassemble a module. + */ + virtual SLANG_NO_THROW SlangResult SLANG_MCALL + disassemble(slang::IBlob** outDisassembledBlob) = 0; }; #define SLANG_UUID_IModule IModule::getTypeGuid() -- cgit v1.2.3