X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=inline;f=ghc%2Fcompiler%2FDEPEND-NOTES;h=fb966c66b78fd2b49bb4422780d862f8d3c930a2;hb=82db18e4c12e1ed76736ee67dc365cdaebeef7d7;hp=2c0f82a09d7b29323571b8f4b4170dacc6f1c0d2;hpb=506fa77d392191e46c12b2c19387ff5b0888f6a2;p=ghc-hetmet.git diff --git a/ghc/compiler/DEPEND-NOTES b/ghc/compiler/DEPEND-NOTES index 2c0f82a..fb966c6 100644 --- a/ghc/compiler/DEPEND-NOTES +++ b/ghc/compiler/DEPEND-NOTES @@ -1,75 +1,3 @@ -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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -77,40 +5,49 @@ 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) + Name, PrimRep then - Var (loop Const.Con, loop IdInfo.IdInfo, - loop Type.GenType, loop Type.Kind) + PrelNames +then + Var (Name, loop IdInfo.IdInfo, + loop Type.Type, loop Type.Kind) then VarEnv, VarSet, ThinAir then - Class (loop TyCon.TyCon, loop Type.Type, loop InstEnv.InstEnv) + Class (loop TyCon.TyCon, loop Type.Type) then - TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon) + TyCon (loop Type.Type, loop Type.Kind, loop DataCon.DataCon, loop Generics.GenInfo) then Type (loop DataCon.DataCon, loop Subst.substTy) then - DataCon, TysPrim, Unify, PprType + FieldLabel( Type), TysPrim (Type), PprEnv (loop DataCon.DataCon, Type) +then + Unify, PprType (PprEnv) +then + Literal (TysPrim, PprType), DataCon (PprType) then - InstEnv (Unify) + TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId, loop Generics.mkGenInfo) then - IdInfo (loop CoreRules.CoreRules) - TysWiredIn (DataCon.mkDataCon, loop MkId.mkDataConId) + PrimOp (PprType, TysWiredIn) then - PrimOp (PprType, TysWiredIn, IdInfo.StrictnessInfo) + CoreSyn then - Const (PrimOp.PrimOp, TysWiredIn.stringTy) + IdInfo (CoreSyn.Unfolding, CoreSyn.CoreRules) then - Id (Const.Con(..)), CoreSyn + Id (lots from IdInfo) then - CoreUtils (loop PprCore.pprCoreExpr), CoreFVs + CoreFVs, PprCore +then + CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars, + CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate) then - OccurAnal (ThinAir.noRepStrs -- an awkward dependency) + OccurAnal (CoreUtils.exprIsTrivial) then - CoreUnfold (loop OccurAnal.globalOccurAnalyse) + CoreUnfold (OccurAnal.occurAnalyseGlobalExpr) then - Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding) + Rules (Unfolding), Subst (Unfolding, CoreFVs), CoreTidy (noUnfolding), Generics (mkTopUnfolding) then MkId (CoreUnfold.mkUnfolding, Subst) - +then + PrelInfo (MkId)