aboutsummaryrefslogtreecommitdiff
path: root/src/ARMeilleure/Translation/ControlFlowGraph.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2024-06-19 09:25:47 -0300
committerGitHub <noreply@github.com>2024-06-19 09:25:47 -0300
commitd25a084858438dd1188113efb76548916c2da9de (patch)
tree743ee3e759ce481bafd224f562aafae53119c753 /src/ARMeilleure/Translation/ControlFlowGraph.cs
parent311ca3c3f1719c0effeedfb8cf90d9f2675ef8a5 (diff)
JIT: Ensure entry block has no predecessors on RegisterUsage pass (#6951)1.1.1335
Diffstat (limited to 'src/ARMeilleure/Translation/ControlFlowGraph.cs')
-rw-r--r--src/ARMeilleure/Translation/ControlFlowGraph.cs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ARMeilleure/Translation/ControlFlowGraph.cs b/src/ARMeilleure/Translation/ControlFlowGraph.cs
index 3ead49c9..45b092ec 100644
--- a/src/ARMeilleure/Translation/ControlFlowGraph.cs
+++ b/src/ARMeilleure/Translation/ControlFlowGraph.cs
@@ -11,7 +11,7 @@ namespace ARMeilleure.Translation
private int[] _postOrderMap;
public int LocalsCount { get; private set; }
- public BasicBlock Entry { get; }
+ public BasicBlock Entry { get; private set; }
public IntrusiveList<BasicBlock> Blocks { get; }
public BasicBlock[] PostOrderBlocks => _postOrderBlocks;
public int[] PostOrderMap => _postOrderMap;
@@ -34,6 +34,15 @@ namespace ARMeilleure.Translation
return result;
}
+ public void UpdateEntry(BasicBlock newEntry)
+ {
+ newEntry.AddSuccessor(Entry);
+
+ Entry = newEntry;
+ Blocks.AddFirst(newEntry);
+ Update();
+ }
+
public void Update()
{
RemoveUnreachableBlocks(Blocks);