Make MkIface warning-free
[ghc-hetmet.git] / compiler / vectorise / Vectorise.hs
index 48aa05c..024ae45 100644 (file)
@@ -8,8 +8,6 @@
 module Vectorise( vectorise )
 where
 
-#include "HsVersions.h"
-
 import VectMonad
 import VectUtils
 import VectType
@@ -131,8 +129,7 @@ tryConvert var vect_var rhs
 vectBndr :: Var -> VM VVar
 vectBndr v
   = do
-      vty <- vectType (idType v)
-      lty <- mkPArrayType vty
+      (vty, lty) <- vectAndLiftType (idType v)
       let vv = v `Id.setIdType` vty
           lv = v `Id.setIdType` lty
       updLEnv (mapTo vv lv)
@@ -344,26 +341,23 @@ type CoreAltWithFVs = AnnAlt Id VarSet
 -- FIXME: this is too lazy
 vectAlgCase tycon ty_args scrut bndr ty [(DEFAULT, [], body)]
   = do
-      vscrut <- vectExpr scrut
-      vty    <- vectType ty
-      lty    <- mkPArrayType vty
+      vscrut         <- vectExpr scrut
+      (vty, lty)     <- vectAndLiftType ty
       (vbndr, vbody) <- vectBndrIn bndr (vectExpr body)
       return $ vCaseDEFAULT vscrut vbndr vty lty vbody
 
 vectAlgCase tycon ty_args scrut bndr ty [(DataAlt dc, [], body)]
   = do
-      vscrut <- vectExpr scrut
-      vty    <- vectType ty
-      lty    <- mkPArrayType vty
+      vscrut         <- vectExpr scrut
+      (vty, lty)     <- vectAndLiftType ty
       (vbndr, vbody) <- vectBndrIn bndr (vectExpr body)
       return $ vCaseDEFAULT vscrut vbndr vty lty vbody
 
 vectAlgCase tycon ty_args scrut bndr ty [(DataAlt dc, bndrs, body)]
   = do
-      vect_tc <- maybeV (lookupTyCon tycon)
-      vty <- vectType ty
-      lty <- mkPArrayType vty
-      vexpr <- vectExpr scrut
+      vect_tc    <- maybeV (lookupTyCon tycon)
+      (vty, lty) <- vectAndLiftType ty
+      vexpr      <- vectExpr scrut
       (vbndr, (vbndrs, vbody)) <- vect_scrut_bndr
                                 . vectBndrsIn bndrs
                                 $ vectExpr body
@@ -376,15 +370,13 @@ vectAlgCase tycon ty_args scrut bndr ty [(DataAlt dc, bndrs, body)]
       return . vLet (vNonRec vbndr vexpr)
              $ vCaseProd vscrut vty lty vect_dc arr_dc shape_bndrs vbndrs vbody
   where
-    vect_scrut_bndr | isDeadBinder bndr = vectBndrNewIn bndr FSLIT("scrut")
+    vect_scrut_bndr | isDeadBinder bndr = vectBndrNewIn bndr (fsLit "scrut")
                     | otherwise         = vectBndrIn bndr
 
 vectAlgCase tycon ty_args scrut bndr ty alts
   = do
-      vect_tc <- maybeV (lookupTyCon tycon)
-      vty               <- vectType ty
-      lty               <- mkPArrayType vty
-
+      vect_tc     <- maybeV (lookupTyCon tycon)
+      (vty, lty)  <- vectAndLiftType ty
       repr        <- mkRepr vect_tc
       shape_bndrs <- arrShapeVars repr
       (len, sel, indices) <- arrSelector repr (map Var shape_bndrs)
@@ -410,7 +402,7 @@ vectAlgCase tycon ty_args scrut bndr ty alts
       return . vLet (vNonRec vbndr vexpr)
              $ (vect_case, lift_case)
   where
-    vect_scrut_bndr | isDeadBinder bndr = vectBndrNewIn bndr FSLIT("scrut")
+    vect_scrut_bndr | isDeadBinder bndr = vectBndrNewIn bndr (fsLit "scrut")
                     | otherwise         = vectBndrIn bndr
 
     alts' = sortBy (\(alt1, _, _) (alt2, _, _) -> cmp alt1 alt2) alts
@@ -437,7 +429,7 @@ vectAlgCase tycon ty_args scrut bndr ty alts
           void_tc <- builtin voidTyCon
           let void_ty = mkTyConApp void_tc []
           arr_ty <- mkPArrayType void_ty
-          bndr   <- newLocalVar FSLIT("voids") arr_ty
+          bndr   <- newLocalVar (fsLit "voids") arr_ty
           len    <- lengthPA void_ty (Var bndr)
           e      <- p len
           return ([], [bndr], e)
@@ -461,7 +453,7 @@ packLiftingContext len shape tag fvs vty lty p
   = do
       select <- builtin selectPAIntPrimVar
       let sel_expr = mkApps (Var select) [shape, tag]
-      sel_var <- newLocalVar FSLIT("sel#") (exprType sel_expr)
+      sel_var <- newLocalVar (fsLit "sel#") (exprType sel_expr)
       lc_var <- builtin liftingContext
       localV $
         do
@@ -471,9 +463,8 @@ packLiftingContext len shape tag fvs vty lty p
           (vexpr, lexpr) <- p
           empty <- emptyPA vty
           return (vexpr, Let (NonRec sel_var sel_expr)
-                         . mkLets (concat bnds)
                          $ Case len lc_var lty
-                             [(DEFAULT, [], lexpr),
+                             [(DEFAULT, [], mkLets (concat bnds) lexpr),
                               (LitAlt (mkMachInt 0), [], empty)])
 
 packFreeVar :: CoreExpr -> CoreExpr -> Var -> VM [CoreBind]