Automatically derive PA for vectorised tycons
[ghc-hetmet.git] / compiler / vectorise / Vectorise.hs
index a35c806..fa771d2 100644 (file)
@@ -58,15 +58,17 @@ vectorise hsc_env _ _ guts
 vectModule :: ModGuts -> VM ModGuts
 vectModule guts
   = do
-      (types', fam_insts, insts) <- vectTypeEnv (mg_types guts)
-
-      let fam_inst_env' = extendFamInstEnvList (mg_fam_inst_env guts) fam_insts
+      (types', fam_insts, pa_insts) <- vectTypeEnv (mg_types guts)
+      
+      let insts         = map painstInstance pa_insts
+          fam_inst_env' = extendFamInstEnvList (mg_fam_inst_env guts) fam_insts
           inst_env'     = extendInstEnvList (mg_inst_env guts) insts
       updGEnv (setInstEnvs inst_env' fam_inst_env')
-      
+     
+      dicts  <- mapM buildPADict pa_insts 
       binds' <- mapM vectTopBind (mg_binds guts)
       return $ guts { mg_types        = types'
-                    , mg_binds        = binds'
+                    , mg_binds        = Rec (concat dicts) : binds'
                     , mg_inst_env     = inst_env'
                     , mg_fam_inst_env = fam_inst_env'
                     , mg_insts        = mg_insts guts ++ insts