[project @ 2002-06-18 13:58:22 by simonpj]
authorsimonpj <unknown>
Tue, 18 Jun 2002 13:58:24 +0000 (13:58 +0000)
committersimonpj <unknown>
Tue, 18 Jun 2002 13:58:24 +0000 (13:58 +0000)
commit80e399639dc521561cc9fe33e6f24079c4eae609
tree555d71b3925a76340742c4c612ffbcd6f4af36c6
parent8c4c38a1cb99c28d8a41bfa99b5165b06e0a7ad9
[project @ 2002-06-18 13:58:22 by simonpj]
---------------------------------------
    Rehash the handling of SeqOp
---------------------------------------

See the comments in the commentary (Cunning Prelude Code).

* Expunge SeqOp altogether

* Add GHC.Base.lazy :: a -> a
  to GHC.Base

* Add GHC.Base.lazy
  to basicTypes/MkId.  The idea is that this defn will over-ride
  the info from GHC.Base.hi, thereby hiding strictness and
  unfolding

* Make stranal/WorkWrap do a "manual inlining" for GHC.Base.lazy
  This happens nicely after the strictness analyser has run.

* Expunge the SeqOp/ParOp magic in CorePrep

* Expunge the RULE for seq in PrelRules

* Change the defns of pseq/par in GHC.Conc to:

{-# INLINE pseq  #-}
        pseq :: a -> b -> b
        pseq  x y = x `seq` lazy y

        {-# INLINE par  #-}
        par :: a -> b -> b
        par  x y = case (par# x) of { _ -> lazy y }
ghc/compiler/basicTypes/MkId.lhs
ghc/compiler/codeGen/CgExpr.lhs
ghc/compiler/coreSyn/CorePrep.lhs
ghc/compiler/prelude/PrelNames.lhs
ghc/compiler/prelude/PrelRules.lhs
ghc/compiler/prelude/primops.txt.pp
ghc/compiler/stranal/WorkWrap.lhs