From: Roman Leshchinskiy Date: Mon, 16 Jul 2007 05:00:19 +0000 (+0000) Subject: Store hoisted bindings in the global environment during vectorisation X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=b6fc60f5c350f121c9955c131fcdf7e643160ddd Store hoisted bindings in the global environment during vectorisation --- diff --git a/compiler/vectorise/VectMonad.hs b/compiler/vectorise/VectMonad.hs index 041928d..fee294f 100644 --- a/compiler/vectorise/VectMonad.hs +++ b/compiler/vectorise/VectMonad.hs @@ -121,6 +121,9 @@ data GlobalEnv = GlobalEnv { -- instances -- , global_fam_inst_env :: FamInstEnvs + + -- Hoisted bindings + , global_bindings :: [(Var, CoreExpr)] } data LocalEnv = LocalEnv { @@ -131,9 +134,6 @@ data LocalEnv = LocalEnv { -- Mapping from tyvars to their PA dictionaries , local_tyvar_pa :: VarEnv CoreExpr - - -- Hoisted bindings - , local_bindings :: [(Var, CoreExpr)] } @@ -146,12 +146,12 @@ initGlobalEnv info instEnvs famInstEnvs , global_tycon_pa = emptyNameEnv , global_inst_env = instEnvs , global_fam_inst_env = famInstEnvs + , global_bindings = [] } emptyLocalEnv = LocalEnv { local_vars = emptyVarEnv , local_tyvar_pa = emptyVarEnv - , local_bindings = [] } -- FIXME diff --git a/compiler/vectorise/VectUtils.hs b/compiler/vectorise/VectUtils.hs index 5b70bf4..74a3405 100644 --- a/compiler/vectorise/VectUtils.hs +++ b/compiler/vectorise/VectUtils.hs @@ -115,7 +115,7 @@ hoistExpr :: FastString -> CoreExpr -> VM Var hoistExpr fs expr = do var <- newLocalVar fs (exprType expr) - updLEnv $ \env -> - env { local_bindings = (var, expr) : local_bindings env } + updGEnv $ \env -> + env { global_bindings = (var, expr) : global_bindings env } return var