X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FDEPEND-NOTES;h=f2ba2443152167f6a2af534340fe28ab120fe5ad;hb=f5f38dff077e7009e42c7a8ead3b0879a6dd989d;hp=c1b64f3afb16d6a377f7df4287c1ab7d026416a7;hpb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;p=ghc-hetmet.git diff --git a/ghc/compiler/DEPEND-NOTES b/ghc/compiler/DEPEND-NOTES index c1b64f3..f2ba244 100644 --- a/ghc/compiler/DEPEND-NOTES +++ b/ghc/compiler/DEPEND-NOTES @@ -1,106 +1,4 @@ -ToDo -~~~~ -* Test effect of eta-expanding past (case x of ..) +Module dependency information is now given in the GHC commentary -* Bottom strictness isn't right. Should be (eg) SSX, not just X. + ghc/docs/comm/genesis/modules.html -* Enumeration types in worker/wrapper for strictness analysis - -* Use (!) types in data cons to unbox. - -* Check constant folding - -* .hi file isn't updated if the only change is to the exports. - For example, UgenAll.lhs re-exports all of U_binding.hs; when a data type - decl in the latter changes, the .hi file for the former isn't updated. - I think this happens when a module exports another mdodule thus: - - module UgenAll( module U_binding, ... ) where - -* This should be reported as an error: - data T k = MkT (k Int#) - -* Bogus report of overlapped pattern for - f (R {field = [c]}) = 1 - f (R {}) = 2 - This shows up for TyCon.maybeTyConSingleCon - -* > module Main( main ) where - - > f :: String -> Int - > f "=<" = 0 - > f "=" = 0 - - > g :: [Char] -> Int - > g ['=','<'] = 0 - > g ['='] = 0 - - > main = return () - - For ``f'' the following is reported. - - tmp.lhs:4: - Pattern match(es) are overlapped in the definition of function `f' - "=" = ... - - There are no complaints for definition for ``g''. - -* Without -O I don't think we need change the module version - if the usages change; I forget why it changes even with -O - -* Record selectors for existential type; no good! What to do? - Record update doesn't make sense either. - - Need to be careful when figuring out strictness, and when generating - worker-wrapper split. - - Also when deriving. - -* Consructor re-use via CSE - - Notes on module dependencies - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The Name/Var/Type group is a bit complicated. Here's the deal - - Name, PrimRep, FieldLabel (uses Type.Type) -then - Var (uses Const.Con, IdInfo.IdInfo, Type.GenType, Type.Kind) -then - VarEnv, VarSet -then - Class (uses TyCon.TyCon, Type.Type, SpecEnv.SpecEnv) -then - TyCon (uses Type.Type, Type.Kind, DataCon.DataCon) -then - Type (uses [DataCon.DataCon]) -then - DataCon, TysPrim, Unify, SpecEnv, PprType -then - IdInfo, TysWiredIn (uses DataCon.mkDataCon, [MkId.mkDataConId]) -then - PrimOp (uses PprType, TysWiredIn) -then - Const (needs PrimOp, [TysWiredIn.stringTy]) -then - Id (needs Const.Con(..)), CoreSyn -then - CoreUtils, OccurAnal -then - CoreUnfold (uses OccurAnal) -then - MkId (uses CoreUnfold) - - -PrimOp uses TysWiredIn - - -Add -~~~ -basicTypes/DataCon.lhs -basicTypes/DataCon.hi-boot - -Remove -~~~~~~ -specialise/SpecUtils.lhs -basicTypes/IdUtils.lhs