From c805542b29975b0d9bf3ea324526f62cfe4331bf Mon Sep 17 00:00:00 2001
From: FICTURE7 <FICTURE7@gmail.com>
Date: Mon, 17 May 2021 03:54:53 +0400
Subject: Allow `LocalVariable` to be assigned more than once (#2288)

* Allow `LocalVariable` to be assigned more than once

This allows us to write flow controls like loops and if-elses with
LocalVariables participating in phi nodes.

* Add `GetLocalNumber` to operand
---
 ARMeilleure/Translation/ControlFlowGraph.cs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'ARMeilleure/Translation/ControlFlowGraph.cs')

diff --git a/ARMeilleure/Translation/ControlFlowGraph.cs b/ARMeilleure/Translation/ControlFlowGraph.cs
index ee1a245e..4c76d5dd 100644
--- a/ARMeilleure/Translation/ControlFlowGraph.cs
+++ b/ARMeilleure/Translation/ControlFlowGraph.cs
@@ -10,15 +10,17 @@ namespace ARMeilleure.Translation
         private BasicBlock[] _postOrderBlocks;
         private int[] _postOrderMap;
 
+        public int LocalsCount { get; }
         public BasicBlock Entry { get; }
         public IntrusiveList<BasicBlock> Blocks { get; }
         public BasicBlock[] PostOrderBlocks => _postOrderBlocks;
         public int[] PostOrderMap => _postOrderMap; 
 
-        public ControlFlowGraph(BasicBlock entry, IntrusiveList<BasicBlock> blocks)
+        public ControlFlowGraph(BasicBlock entry, IntrusiveList<BasicBlock> blocks, int localsCount)
         {
             Entry = entry;
             Blocks = blocks;
+            LocalsCount = localsCount;
 
             Update(removeUnreachableBlocks: true);
         }
-- 
cgit v1.2.3-70-g09d2