X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectorise.hs;h=8c9579e621eb2ea4cd01e8672bbf3060f8473a05;hb=37b0cb1147cadef4d68f3fc61faa3ec11ad47440;hp=b4b383ea80ffa727652bd5f65369eeaf9905f3b9;hpb=94bf0d3604ff0d2ecab246924af712bdd1c29a40;p=ghc-hetmet.git diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index b4b383e..8c9579e 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -18,7 +18,6 @@ import CoreSyn import CoreUnfold ( mkInlineUnfolding ) import CoreFVs import CoreMonad ( CoreM, getHscEnv ) -import FamInstEnv ( extendFamInstEnvList ) import Var import Id import OccName @@ -62,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 @@ -74,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 } @@ -192,9 +189,13 @@ vectTopRhs vectTopRhs var expr = dtrace (vcat [text "vectTopRhs", ppr expr]) $ closedV - $ do (inline, vexpr) <- inBind var + $ do (inline, isScalar, vexpr) <- inBind var + $ pprTrace "vectTopRhs" (ppr var) $ vectPolyExpr (isLoopBreaker $ idOccInfo var) (freeVars expr) + if isScalar + then addGlobalScalar var + else return () return (inline, vectorised vexpr)