dph-plugin: use our own pipeline
[packages/dph.git] / dph-plugin / DPH / Plugin.hs
index fa5c2d4..0f978af 100644 (file)
@@ -1,6 +1,7 @@
 
 
 module DPH.Plugin where
+import DPH.Pipeline
 import GhcPlugins
 import StaticFlags
 import Debug.Trace
@@ -18,7 +19,13 @@ install _ todos
         --   The pretty printers depend on static flags and will `error` if 
         --   we don't do this first.
         unsafePerformIO
-         $ do   initStaticOpts
+         $ do   addOpt "-dsuppress-all"
+                addOpt "-dsuppress-idinfo"
+                addOpt "-dsuppress-uniques"
+                addOpt "-dppr-case-as-let"
+                addOpt "-dppr-cols200"
+
+                initStaticOpts
                 return (return ())
 
         -- Flatten out the tree of passes into a list to make it easier to handle.
@@ -35,129 +42,6 @@ install _ todos
            else return todos'
 
 
-dphPhaseClosure = 4
-
--- | Our vectoriser pipeline.
---   This replaces the standard compilation pipeline defined in 
---   SimplCore.lhs of the main compiler.
-vectoriserPipeline :: [CoreToDo]
-vectoriserPipeline
- = [    -- The vectoriser requires the desugared code to be pre-simplified
-        CoreDoSimplify 10
-                SimplMode 
-                { sm_names      = ["Vectorise", "PreSimplify"]
-                , sm_phase      = InitialPhase
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = False
-                , sm_case_case  = False }
-
-        -- Run the vectoriser.
-   ,    CoreDoVectorisation 
-
-        ---------------------
-        -- We inline the different combinator layers one after another,
-        -- to give their associated rewrite rules a chance to fire.
-        --   Each phase reduces the abstraction level of our code.
-
-        -- Inline lifted applications and closure constructors.
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Closures"]
-                , sm_phase      = Phase 4
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True } 
-
-        -- Inline PArray and PData combinators.
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "PArray"]
-                , sm_phase      = Phase 3
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True } 
-
-        -- Inline unlifted backend.
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Unlifted"]
-                , sm_phase      = Phase 2
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True } 
-
-        -- Inline stream functions.
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Stream"]
-                , sm_phase      = Phase 1
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True } 
-
-        -- Inline inner loops and everything else.
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Stream"]
-                , sm_phase      = Phase 0
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True } 
-
-        ---------------------
-        -- We've got everything expressed as loops, 
-        -- and need to optimise this low level code.
-
-   ,    CoreDoStrictness
-
-   ,    CoreDoWorkerWrapper
-
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Post Worker-Wrapper"]
-                , sm_phase      = Phase 0
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True }
-
-   ,    CoreDoSpecConstr
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Post SpecConstr"]
-                , sm_phase      = Phase 0
-                , sm_rules      = False
-                , sm_eta_expand = False
-                , sm_inline     = False
-                , sm_case_case  = True }
-
-
-   ,    CoreDoFloatOutwards
-                FloatOutSwitches
-                { floatOutLambdas               = Nothing
-                , floatOutConstants             = False 
-                , floatOutPartialApplications   = False }
-
-   ,    CoreCSE
-
-   ,    CoreDoFloatInwards
-
-   ,    CoreDoSimplify 10
-                SimplMode
-                { sm_names      = ["Vectorise", "Final"]
-                , sm_phase      = Phase 0
-                , sm_rules      = True
-                , sm_eta_expand = True
-                , sm_inline     = True
-                , sm_case_case  = True }
-   ]
-                 
 
 -- CoreToDo -------------------------------------------------------------------
 -- | Flatten `CoreDoPasses` and drop out `CoreDoNothing` const