Просмотр исходного кода

Fix tailcall case in EmitterContext (#1235)

Ficture Seven 6 лет назад
Родитель
Сommit
4b79b78b8c
1 измененных файлов с 4 добавлено и 9 удалено
  1. 4 9
      ARMeilleure/Translation/EmitterContext.cs

+ 4 - 9
ARMeilleure/Translation/EmitterContext.cs

@@ -609,15 +609,10 @@ namespace ARMeilleure.Translation
 
 
         private static bool EndsWithUnconditional(BasicBlock block)
         private static bool EndsWithUnconditional(BasicBlock block)
         {
         {
-            Operation lastOp = block.GetLastOp() as Operation;
-
-            if (lastOp == null)
-            {
-                return false;
-            }
-
-            return lastOp.Instruction == Instruction.Branch ||
-                   lastOp.Instruction == Instruction.Return;
+            return block.Operations.Last is Operation lastOp &&
+                   (lastOp.Instruction == Instruction.Branch ||
+                    lastOp.Instruction == Instruction.Return ||
+                    lastOp.Instruction == Instruction.Tailcall);
         }
         }
 
 
         public ControlFlowGraph GetControlFlowGraph()
         public ControlFlowGraph GetControlFlowGraph()