diff options
Diffstat (limited to 'Ryujinx.Graphics.Shader/Translation/Translator.cs')
-rw-r--r-- | Ryujinx.Graphics.Shader/Translation/Translator.cs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Ryujinx.Graphics.Shader/Translation/Translator.cs b/Ryujinx.Graphics.Shader/Translation/Translator.cs index 55617b24..3e5cb4a8 100644 --- a/Ryujinx.Graphics.Shader/Translation/Translator.cs +++ b/Ryujinx.Graphics.Shader/Translation/Translator.cs @@ -105,13 +105,16 @@ namespace Ryujinx.Graphics.Shader.Translation { BasicBlock[] irBlocks = ControlFlowGraph.MakeCfg(ops); - Dominance.FindDominators(irBlocks[0], irBlocks.Length); + if (irBlocks.Length > 0) + { + Dominance.FindDominators(irBlocks[0], irBlocks.Length); - Dominance.FindDominanceFrontiers(irBlocks); + Dominance.FindDominanceFrontiers(irBlocks); - Ssa.Rename(irBlocks); + Ssa.Rename(irBlocks); - Optimizer.Optimize(irBlocks, config.Stage); + Optimizer.Optimize(irBlocks, config.Stage); + } StructuredProgramInfo sInfo = StructuredProgram.MakeStructuredProgram(irBlocks, config); @@ -158,6 +161,13 @@ namespace Ryujinx.Graphics.Shader.Translation context = new EmitterContext(header.Stage, header); } + if (cfg == null) + { + size = 0; + + return new Operation[0]; + } + ulong maxEndAddress = 0; for (int blkIndex = 0; blkIndex < cfg.Length; blkIndex++) |