Skip to content
  • Dominik Peteler's avatar
    Refactored Simplify pass · 9a3e1f31
    Dominik Peteler authored and Marge Bot's avatar Marge Bot committed
     * Removed references to driver from GHC.Core.LateCC, GHC.Core.Simplify
       namespace and GHC.Core.Opt.Stats.
       Also removed services from configuration records.
    
     * Renamed GHC.Core.Opt.Simplify to GHC.Core.Opt.Simplify.Iteration.
    
     * Inlined `simplifyPgm` and renamed `simplifyPgmIO` to `simplifyPgm`
       and moved the Simplify driver to GHC.Core.Opt.Simplify.
    
     * Moved `SimplMode` and `FloatEnable` to GHC.Core.Opt.Simplify.Env.
    
     * Added a configuration record `TopEnvConfig` for the `SimplTopEnv` environment
       in GHC.Core.Opt.Simplify.Monad.
    
     * Added `SimplifyOpts` and `SimplifyExprOpts`. Provide initialization functions
       for those in a new module GHC.Driver.Config.Core.Opt.Simplify.
       Also added initialization functions for `SimplMode` to that module.
    
     * Moved `CoreToDo` and friends to a new module GHC.Core.Pipeline.Types
       and the counting types and functions (`SimplCount` and `Tick`) to new
       module GHC.Core.Opt.Stats.
    
     * Added getter functions for the fields of `SimplMode`. The pedantic bottoms
       option and the platform are retrieved from the ArityOpts and RuleOpts and the
       getter functions allow us to retrieve values from `SpecEnv` without the
       knowledge where the data is stored exactly.
    
     * Moved the coercion optimization options from the top environment to
       `SimplMode`. This way the values left in the top environment are those
       dealing with monadic functionality, namely logging, IO related stuff and
       counting. Added a note "The environments of the Simplify pass".
    
     * Removed `CoreToDo` from GHC.Core.Lint and GHC.CoreToStg.Prep and got rid of
       `CoreDoSimplify`. Pass `SimplifyOpts` in the `CoreToDo` type instead.
    
     * Prep work before removing `InteractiveContext` from `HscEnv`.
    9a3e1f31