Create exported names in vectorisation monads
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 26 Jul 2007 02:41:44 +0000 (02:41 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 26 Jul 2007 02:41:44 +0000 (02:41 +0000)
compiler/vectorise/VectMonad.hs

index ed18f1f..944f8c8 100644 (file)
@@ -3,7 +3,7 @@ module VectMonad (
   VM,
 
   noV, tryV, maybeV, orElseV, fixV, localV, closedV, initV,
-  cloneName, newLocalVar, newTyVar,
+  cloneName, newExportedVar, newLocalVar, newTyVar,
   
   Builtins(..), paDictTyCon, paDictDataCon,
   builtin,
@@ -47,6 +47,7 @@ import FamInstEnv
 import Panic
 import Outputable
 import FastString
+import SrcLoc        ( noSrcSpan )
 
 import Control.Monad ( liftM )
 
@@ -280,6 +281,16 @@ cloneName mk_occ name = liftM make (liftDs newUnique)
                                                     (nameSrcSpan name)
            | otherwise           = mkSystemName u occ_name
 
+newExportedVar :: OccName -> Type -> VM Var
+newExportedVar occ_name ty 
+  = do
+      mod <- liftDs getModuleDs
+      u   <- liftDs newUnique
+
+      let name = mkExternalName u mod occ_name noSrcSpan
+      
+      return $ Id.mkExportedLocalId name ty
+
 newLocalVar :: FastString -> Type -> VM Var
 newLocalVar fs ty
   = do