diff options
author | Roman Leshchinskiy <rl@cse.unsw.edu.au> | 2009-03-07 13:56:52 +0000 |
---|---|---|
committer | Roman Leshchinskiy <rl@cse.unsw.edu.au> | 2009-03-07 13:56:52 +0000 |
commit | bee06bad431d372bd862b5c6e921d8fc87eaffc9 (patch) | |
tree | d42aadd5b693906158553b6026571ac35d5085d8 /compiler/vectorise/VectUtils.hs | |
parent | 7a4a8360e8b7119485d10d073a984e617d6a0422 (diff) | |
download | haskell-bee06bad431d372bd862b5c6e921d8fc87eaffc9.tar.gz |
Generate lots of __inline_me during vectorisation
Diffstat (limited to 'compiler/vectorise/VectUtils.hs')
-rw-r--r-- | compiler/vectorise/VectUtils.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/vectorise/VectUtils.hs b/compiler/vectorise/VectUtils.hs index 5c014610c5..0d5585fc04 100644 --- a/compiler/vectorise/VectUtils.hs +++ b/compiler/vectorise/VectUtils.hs @@ -394,12 +394,13 @@ buildClosures :: [TyVar] -> [VVar] -> [Type] -> Type -> VM VExpr -> VM VExpr buildClosures _ _ [] _ mk_body = mk_body buildClosures tvs vars [arg_ty] res_ty mk_body - = buildClosure tvs vars arg_ty res_ty mk_body + = liftM vInlineMe (buildClosure tvs vars arg_ty res_ty mk_body) buildClosures tvs vars (arg_ty : arg_tys) res_ty mk_body = do res_ty' <- mkClosureTypes arg_tys res_ty arg <- newLocalVVar (fsLit "x") arg_ty - buildClosure tvs vars arg_ty res_ty' + liftM vInlineMe + . buildClosure tvs vars arg_ty res_ty' . hoistPolyVExpr tvs $ do lc <- builtin liftingContext @@ -424,7 +425,7 @@ buildClosure tvs vars arg_ty res_ty mk_body body <- mk_body body' <- bind (vVar env_bndr) (vVarApps lc body (vars ++ [arg_bndr])) - return (vLamsWithoutLC [env_bndr, arg_bndr] body') + return . vInlineMe $ vLamsWithoutLC [env_bndr, arg_bndr] body' mkClosure arg_ty res_ty env_ty fn env |