never executed always true always false
    1 {- |
    2 Module      : NITTA.Synthesis.Steps
    3 Description : Synthesis tree representation
    4 Copyright   : (c) Aleksandr Penskoi, 2022
    5 License     : BSD3
    6 Maintainer  : aleksandr.penskoi@gmail.com
    7 Stability   : experimental
    8 -}
    9 module NITTA.Synthesis.Steps (
   10     module NITTA.Synthesis.Steps.Allocation,
   11     module NITTA.Synthesis.Steps.Bind,
   12     module NITTA.Synthesis.Steps.Dataflow,
   13     module NITTA.Synthesis.Steps.BreakLoop,
   14     module NITTA.Synthesis.Steps.OptimizeAccum,
   15     module NITTA.Synthesis.Steps.OptimizeLogicalUnit,
   16     module NITTA.Synthesis.Steps.ResolveDeadlock,
   17     module NITTA.Synthesis.Steps.ConstantFolding,
   18     isRefactor,
   19 ) where
   20 
   21 import Data.Maybe (isJust)
   22 import Data.Typeable (cast)
   23 import NITTA.Synthesis.Steps.Allocation
   24 import NITTA.Synthesis.Steps.Bind
   25 import NITTA.Synthesis.Steps.BreakLoop
   26 import NITTA.Synthesis.Steps.ConstantFolding
   27 import NITTA.Synthesis.Steps.Dataflow
   28 import NITTA.Synthesis.Steps.OptimizeAccum
   29 import NITTA.Synthesis.Steps.OptimizeLogicalUnit
   30 import NITTA.Synthesis.Steps.ResolveDeadlock
   31 import NITTA.Synthesis.Types (SynthesisDecision (SynthesisDecision, metrics))
   32 
   33 isRefactor SynthesisDecision{metrics}
   34     | isJust (cast metrics :: Maybe BreakLoopMetrics) = True
   35     | isJust (cast metrics :: Maybe OptimizeAccumMetrics) = True
   36     | isJust (cast metrics :: Maybe OptimizeLogicalUnitMetrics) = True
   37     | isJust (cast metrics :: Maybe ResolveDeadlockMetrics) = True
   38     | isJust (cast metrics :: Maybe ConstantFoldingMetrics) = True
   39 isRefactor _ = False