X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectorise.hs;h=06fc5422127ba890967692f2898b6996064a0eef;hb=8e71d5082f618e97db1c82dede313367c386891b;hp=39c6a23a0168688086c05d223d0081e6cc94a0be;hpb=fe5405d4b97a521e32899f6dc2153c556723ca62;p=ghc-hetmet.git diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index 39c6a23..06fc542 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -46,11 +46,23 @@ import Outputable import FastString import Control.Monad ( liftM, liftM2, zipWithM, mapAndUnzipM ) -mkNDPVar :: FastString -> RdrName -mkNDPVar fs = mkRdrQual nDP_BUILTIN (mkVarOccFS fs) +mkNDPVar :: String -> RdrName +mkNDPVar s = mkRdrQual nDP_BUILTIN (mkVarOcc s) + +mkNDPVarFS :: FastString -> RdrName +mkNDPVarFS fs = mkRdrQual nDP_BUILTIN (mkVarOccFS fs) builtin_PAs :: [(Name, RdrName)] -builtin_PAs = [(intTyConName, mkNDPVar FSLIT("dPA_Int"))] +builtin_PAs = [ + mk closureTyConName FSLIT("dPA_Clo") + , mk intTyConName FSLIT("dPA_Int") + ] + ++ tups + where + mk name fs = (name, mkNDPVarFS fs) + + tups = mk_tup 0 : map mk_tup [2..3] + mk_tup n = (getName $ tupleTyCon Boxed n, mkNDPVar $ "dPA_" ++ show n) vectorise :: HscEnv -> UniqSupply -> RuleBase -> ModGuts -> IO (SimplCount, ModGuts) @@ -69,7 +81,7 @@ vectModule :: ModGuts -> VM ModGuts vectModule guts = do defTyConRdrPAs builtin_PAs - (types', fam_insts) <- vectTypeEnv (mg_types guts) + (types', fam_insts, tc_binds) <- vectTypeEnv (mg_types guts) let fam_inst_env' = extendFamInstEnvList (mg_fam_inst_env guts) fam_insts updGEnv (setFamInstEnv fam_inst_env') @@ -78,8 +90,7 @@ vectModule guts -- workers <- mapM vectDataConWorkers pa_insts binds' <- mapM vectTopBind (mg_binds guts) return $ guts { mg_types = types' - , mg_binds = -- Rec (concat workers ++ concat dicts) : - binds' + , mg_binds = Rec tc_binds : binds' , mg_fam_inst_env = fam_inst_env' , mg_fam_insts = mg_fam_insts guts ++ fam_insts }