summaryrefslogtreecommitdiff
path: root/compiler/vectorise/VectUtils.hs
diff options
context:
space:
mode:
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>2009-03-07 13:56:52 +0000
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>2009-03-07 13:56:52 +0000
commitbee06bad431d372bd862b5c6e921d8fc87eaffc9 (patch)
treed42aadd5b693906158553b6026571ac35d5085d8 /compiler/vectorise/VectUtils.hs
parent7a4a8360e8b7119485d10d073a984e617d6a0422 (diff)
downloadhaskell-bee06bad431d372bd862b5c6e921d8fc87eaffc9.tar.gz
Generate lots of __inline_me during vectorisation
Diffstat (limited to 'compiler/vectorise/VectUtils.hs')
-rw-r--r--compiler/vectorise/VectUtils.hs7
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