aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Translation/Translator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Shader/Translation/Translator.cs')
-rw-r--r--Ryujinx.Graphics.Shader/Translation/Translator.cs18
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++)