X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FNOTES;h=8607f90e5118a50277057624f3322e0ec0a40daa;hb=423d477bfecd490de1449c59325c8776f91d7aac;hp=14725ddbfbcc57b9e7d99e0440e7eda860302916;hpb=2c6d73e2ca9a545c4295c6f532cd3612e7fd3d8d;p=ghc-hetmet.git diff --git a/ghc/compiler/NOTES b/ghc/compiler/NOTES index 14725dd..8607f90 100644 --- a/ghc/compiler/NOTES +++ b/ghc/compiler/NOTES @@ -1,3 +1,59 @@ + New back end thoughts + +----------------------------------------------------------------------------- +Codegen notes + +* jumps to ImpossibleBranch should be removed. + +* Profiling: + - when updating a closure with an indirection to a function, + we should make a permanent indirection. + + - check that we're bumping the scc count appropriately + +* check perf & binary sizes against the HEAD + +----------------------------------------------------------------------------- +C backend notes + +* use STGCALL macros for foreign calls (doesn't look like volatile regs + are handled properly at the mo). + +----------------------------------------------------------------------------- +Cmm parser notes + +* switches + +* need to cater for unexported procedures/info tables? + +* We should be able to get rid of entry labels, use info labels only. + - we need a %ENTRY_LBL(info_lbl) macro, so that instead of + JMP_(foo_entry) we can write jump %ENTRY_LBL(foo_info). + +----------------------------------------------------------------------------- + +* Move arg-descr from LFInfo to ClosureInfo? + But: only needed for functions + +* Move all of CgClosure.link_caf into NewCaf, and newDynCaf + +* If the case binder is dead, and the constr is nullary, + do we need to assign to Node? + + +------------------------- +* Relation between separate type sigs and pattern type sigs +f :: forall a. a->a +f :: b->b = e -- No: monomorphic + +f :: forall a. a->a +f :: forall a. a->a -- OK + +f :: forall a. [a] -> [a] +f :: forall b. b->b = e ??? + + +------------------------------- NB: all floats are let-binds, but some non-rec lets may be unlifted (with RHS ok-for-speculation) @@ -30,7 +86,7 @@ simplNonRecBind: [was simplBeta] else completeLazyBind -simplRecPair: [binder already simplified, but not its IdInfo] +simplLazyBind: [binder already simplified, but not its IdInfo] [used for both rec and top-lvl non-rec] [must not be strict/unboxed; case not allowed] - check for PreInlineUnconditionally