[project @ 2000-10-27 16:30:02 by simonmar]
[ghc-hetmet.git] / ghc / compiler / simplStg / LambdaLift.lhs
index 2f02a70..20c6c10 100644 (file)
@@ -11,16 +11,16 @@ module LambdaLift ( liftProgram ) where
 import StgSyn
 
 import Bag             ( Bag, emptyBag, unionBags, unitBag, snocBag, bagToList )
-import Id              ( mkSysLocal, idType, setIdArity, 
-                         setIdVisibility, Id
-                       )
+import Id              ( mkVanillaId, idType, setIdArityInfo, Id )
 import VarSet
 import VarEnv
 import IdInfo          ( exactArity )
-import Name             ( Module )
+import Module          ( Module )
+import Name             ( mkTopName )
 import Type            ( splitForAllTys, mkForAllTys, mkFunTys, Type )
 import UniqSupply      ( uniqFromSupply, splitUniqSupply, UniqSupply )
-import Util            ( zipEqual, panic, assertPanic )
+import Util            ( zipEqual )
+import Panic           ( panic, assertPanic )
 \end{code}
 
 This is the lambda lifter.  It turns lambda abstractions into
@@ -144,7 +144,9 @@ liftExpr :: StgExpr
         -> LiftM (StgExpr, LiftInfo)
 
 
-liftExpr expr@(StgCon con args _) = returnLM (expr, emptyLiftInfo)
+liftExpr expr@(StgLit _)        = returnLM (expr, emptyLiftInfo)
+liftExpr expr@(StgConApp _ _)   = returnLM (expr, emptyLiftInfo)
+liftExpr expr@(StgPrimApp _ _ _) = returnLM (expr, emptyLiftInfo)
 
 liftExpr expr@(StgApp v args)
   = lookUp v           `thenLM` \ ~(sc, sc_args) ->    -- NB the ~.  We don't want to
@@ -441,8 +443,8 @@ newSupercombinator :: Type
                   -> LiftM Id
 
 newSupercombinator ty arity mod ci us idenv
-  = setIdVisibility (Just mod) uniq (mkSysLocal uniq ty)
-    `setIdArity` exactArity arity
+  = mkVanillaId (mkTopName uniq mod SLIT("_ll")) ty
+    `setIdArityInfo` exactArity arity
        -- ToDo: rm the setIdArity?  Just let subsequent stg-saturation pass do it?
   where
     uniq = uniqFromSupply us