diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-11-07 13:51:46 -0500 |
|---|---|---|
| committer | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-11-07 10:51:46 -0800 |
| commit | 99c295477fa1f6c5ce47e0d1c8fb3eea9d5e5f98 (patch) | |
| tree | a546b873cb621eac61137b650b196a2a161815ad /source/slang/slang-lower-to-ir.cpp | |
| parent | fedda2e5342d3bfbdbbdd3ca232b3f69fff81ef7 (diff) | |
* Removed strip pass from emit as no longer needed (#1114)
* If obfuscate is enabled do strip on Layout
* Add option to keep insts that have layout decoration (else DCE strips layout)
* Add NameHint back in lowering - as strip now correctly removes. We may want NameHints in some stages even with obfuscation (for error messages in IR passes), as long as they are removed appropriately at the end
Diffstat (limited to 'source/slang/slang-lower-to-ir.cpp')
| -rw-r--r-- | source/slang/slang-lower-to-ir.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp index f9d39993a..93084fedd 100644 --- a/source/slang/slang-lower-to-ir.cpp +++ b/source/slang/slang-lower-to-ir.cpp @@ -1846,11 +1846,6 @@ static void addNameHint( IRInst* inst, Decl* decl) { - if (context->shared->m_obfuscateCode) - { - return; - } - String name = getNameForNameHint(context, decl); if(name.getLength() == 0) return; @@ -7294,6 +7289,24 @@ RefPtr<IRModule> TargetProgram::createIRModuleForLayout(DiagnosticSink* sink) builder->addLayoutDecoration(irType, irTypeLayout); } + // Lets strip and run DCE here + if (linkage->m_obfuscateCode) + { + IRStripOptions stripOptions; + + stripOptions.shouldStripNameHints = linkage->m_obfuscateCode; + stripOptions.stripSourceLocs = linkage->m_obfuscateCode; + + stripFrontEndOnlyInstructions(irModule, stripOptions); + + IRDeadCodeEliminationOptions options; + options.keepExportsAlive = true; + options.keepLayoutsAlive = true; + + // Eliminate any dead code + eliminateDeadCode(irModule, options); + } + m_irModuleForLayout = irModule; return irModule; } |
