never executed always true always false
1 module HelVM.HelMA.Automaton.Optimizer.DeadCodeOptimizer
2 ( deadCodeElimination
3 ) where
4
5 import HelVM.HelMA.Automaton.Instruction
6
7 import HelVM.HelMA.Automaton.Instruction.Extras.Patterns
8
9
10 deadCodeElimination ∷ InstructionList → InstructionList
11 deadCodeElimination = fix optimize where
12 optimize ∷ (InstructionList → InstructionList) → InstructionList → InstructionList
13 optimize f (j@(JumpP _) : il) = j : f (dropWhile (not . isMark) il)
14 optimize f (i : il) = i : f il
15 optimize _ [] = []