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