2 -- Functions to bring a Core expression in normal form. This module provides a
3 -- top level function "normalize", and defines the actual transformation passes that
6 module Normalize (normalize) where
11 import qualified Maybe
12 import qualified Control.Monad as Monad
16 import qualified UniqSupply
17 import qualified CoreUtils
20 import qualified CoreSubst
21 import Outputable ( showSDoc, ppr, nest )
28 -- What transforms to run?
31 -- Normalize a core expression by running transforms until none applies
32 -- anymore. Uses a UniqSupply to generate new identifiers.
33 normalize :: UniqSupply.UniqSupply -> CoreExpr -> CoreExpr
34 normalize = dotransforms transforms