X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectorise.hs;h=5e45c977d8c80e9c7918e5450241500fd652f64f;hb=8287e2325f56a6ce7f855f4aeb1e975f64717720;hp=22cba53222703604eb5f8b13281dbf4587749d33;hpb=d5744ef51a8b8b1e063daa98026a9f803bfc88b4;p=ghc-hetmet.git diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index 22cba53..5e45c97 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -3,7 +3,9 @@ module Vectorise( vectorise ) where -import VectType +import Vectorise.Type.Env +import Vectorise.Type.Type +import Vectorise.Convert import Vectorise.Utils.Hoisting import Vectorise.Exp import Vectorise.Vect @@ -13,16 +15,17 @@ import Vectorise.Monad import HscTypes hiding ( MonadThings(..) ) import Module ( PackageId ) import CoreSyn -import CoreUnfold ( mkInlineRule ) +import CoreUnfold ( mkInlineUnfolding ) import CoreFVs import CoreMonad ( CoreM, getHscEnv ) -import FamInstEnv ( extendFamInstEnvList ) import Var import Id import OccName import BasicTypes ( isLoopBreaker ) import Outputable import Util ( zipLazy ) +import MonadUtils + import Control.Monad debug = False @@ -58,9 +61,7 @@ vectModule guts -- TODO: What new binds do we get back here? (types', fam_insts, tc_binds) <- vectTypeEnv (mg_types guts) - -- TODO: What is this? - let fam_inst_env' = extendFamInstEnvList (mg_fam_inst_env guts) fam_insts - updGEnv (setFamInstEnv fam_inst_env') + (_, fam_inst_env) <- readGEnv global_fam_inst_env -- dicts <- mapM buildPADict pa_insts -- workers <- mapM vectDataConWorkers pa_insts @@ -70,7 +71,7 @@ vectModule guts return $ guts { mg_types = types' , mg_binds = Rec tc_binds : binds' - , mg_fam_inst_env = fam_inst_env' + , mg_fam_inst_env = fam_inst_env , mg_fam_insts = mg_fam_insts guts ++ fam_insts } @@ -166,7 +167,7 @@ vectTopBinder var inline expr vty <- vectType (idType var) -- Make the vectorised version of binding's name, and set the unfolding used for inlining. - var' <- liftM (`setIdUnfolding` unfolding) + var' <- liftM (`setIdUnfoldingLazily` unfolding) $ cloneId mkVectOcc var vty -- Add the mapping between the plain and vectorised name to the state. @@ -175,7 +176,7 @@ vectTopBinder var inline expr return var' where unfolding = case inline of - Inline arity -> mkInlineRule expr (Just arity) + Inline arity -> mkInlineUnfolding (Just arity) expr DontInline -> noUnfolding