X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FDEPEND-NOTES;h=f2ba2443152167f6a2af534340fe28ab120fe5ad;hb=0dbbf1932d550293986af6244202cb735b2cd966;hp=2c0f82a09d7b29323571b8f4b4170dacc6f1c0d2;hpb=506fa77d392191e46c12b2c19387ff5b0888f6a2;p=ghc-hetmet.git diff --git a/ghc/compiler/DEPEND-NOTES b/ghc/compiler/DEPEND-NOTES index 2c0f82a..f2ba244 100644 --- a/ghc/compiler/DEPEND-NOTES +++ b/ghc/compiler/DEPEND-NOTES @@ -1,116 +1,4 @@ -add types/InstEnv, InstEnv.hi-boot -add coreSyn/CoreRules.* -add coreSyn/CoreTidy.lhs -add coreSyn/CoreFVs.lhs -remove coreSyn/FreeVars.lhs -add coreSyn/Subst.* -remove simplCore/MagicUFs.* - -remove specialise/SpecEnv.* - - - -ToDo -~~~~ -* Test effect of eta-expanding past (case x of ..) - -* Bottom strictness isn't right. Should be (eg) SSX, not just X. - -* 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 -Things in brackets are what the module *uses*. -A 'loop' indicates a use from a module compiled later - - Name, PrimRep, FieldLabel (loop Type.Type) -then - Var (loop Const.Con, loop IdInfo.IdInfo, - loop Type.GenType, loop Type.Kind) -then - VarEnv, VarSet, ThinAir -then - Class (loop TyCon.TyCon, loop Type.Type, loop InstEnv.InstEnv) -then - TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon) -then - Type (loop DataCon.DataCon, loop Subst.substTy) -then - DataCon, TysPrim, Unify, PprType -then - InstEnv (Unify) -then - IdInfo (loop CoreRules.CoreRules) - TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId) -then - PrimOp (PprType, TysWiredIn, IdInfo.StrictnessInfo) -then - Const (PrimOp.PrimOp, TysWiredIn.stringTy) -then - Id (Const.Con(..)), CoreSyn -then - CoreUtils (loop PprCore.pprCoreExpr), CoreFVs -then - OccurAnal (ThinAir.noRepStrs -- an awkward dependency) -then - CoreUnfold (loop OccurAnal.globalOccurAnalyse) -then - Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding) -then - MkId (CoreUnfold.mkUnfolding, Subst) +Module dependency information is now given in the GHC commentary + ghc/docs/comm/genesis/modules.html