diff options
Diffstat (limited to 'ARMeilleure/CodeGen/Optimizations/Optimizer.cs')
-rw-r--r-- | ARMeilleure/CodeGen/Optimizations/Optimizer.cs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/ARMeilleure/CodeGen/Optimizations/Optimizer.cs b/ARMeilleure/CodeGen/Optimizations/Optimizer.cs index c01a8f1e..e3117d1f 100644 --- a/ARMeilleure/CodeGen/Optimizations/Optimizer.cs +++ b/ARMeilleure/CodeGen/Optimizations/Optimizer.cs @@ -16,17 +16,17 @@ namespace ARMeilleure.CodeGen.Optimizations { modified = false; - foreach (BasicBlock block in cfg.Blocks) + for (BasicBlock block = cfg.Blocks.First; block != null; block = block.ListNext) { - LinkedListNode<Node> node = block.Operations.First; + Node node = block.Operations.First; while (node != null) { - LinkedListNode<Node> nextNode = node.Next; + Node nextNode = node.ListNext; - bool isUnused = IsUnused(node.Value); + bool isUnused = IsUnused(node); - if (!(node.Value is Operation operation) || isUnused) + if (!(node is Operation operation) || isUnused) { if (isUnused) { @@ -80,13 +80,11 @@ namespace ARMeilleure.CodeGen.Optimizations } } - private static void RemoveNode(BasicBlock block, LinkedListNode<Node> llNode) + private static void RemoveNode(BasicBlock block, Node node) { // Remove a node from the nodes list, and also remove itself // from all the use lists on the operands that this node uses. - block.Operations.Remove(llNode); - - Node node = llNode.Value; + block.Operations.Remove(node); for (int index = 0; index < node.SourcesCount; index++) { |