diff options
author | gdkchan <gab.dark.100@gmail.com> | 2024-06-19 09:25:47 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-19 09:25:47 -0300 |
commit | d25a084858438dd1188113efb76548916c2da9de (patch) | |
tree | 743ee3e759ce481bafd224f562aafae53119c753 /src/ARMeilleure/Translation/ControlFlowGraph.cs | |
parent | 311ca3c3f1719c0effeedfb8cf90d9f2675ef8a5 (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.cs | 11 |
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); |