[project @ 1996-01-08 20:28:12 by partain]
[ghc.git] / ghc / docs / add_to_compiler / state-of-play.NOTES
1 analyses:
2     strictness & binding-time analysis  (\cite{launchbury91a})
3     polymorphic-instance analysis (pldi 91; referred \cite{launchbury91a}, p 86 top left)
4     facet analysis (part of [higher-order offline] parameterized partial evaluation)
5         (pldi 91: \cite{consel91a})
6     binding-time analysis (fpca89; \cite{mogensen91})
7     strictness analysis (\cite{wadler87a})
8     update analysis (fpca; \cite{bloss89b})
9     path analysis (fpca; \cite{bloss89b})
10     interference, closure, and lifetime analysis (fpca; \cite{sestoft89a})
11     stacklessness anaysis (fpca; \cite{lester89b})
12     liveness analysis (AHU, reffed by lester89b)
13     complexity analysis (fpca, \cite{rosendahl89a})
14     demand analysis
15     time analysis
16
17 type systems:
18     refinement types (pldi 91; \cite{freeman91a})
19     soft typing (pldi 91; \cite{cartwright91a})
20
21 other:
22
23 done in LML compiler:
24     llift       lambda lifter
25         /Bconv
26     simpl
27         /asimpl arithmetic simplifications
28         /casetr case of case ... (& a couple of others ?)
29         /mlet   mlet (inlining) ?
30         /simpl  constant folding, casefold, Esimpl, simpl,
31                 force arity, movelam
32     strict      very simple strictness analysis
33     transform
34         /case   caseelim
35         /casep  condjoin
36         /constr constrtr
37         /lettrans let transformations
38     unrec
39     Gopt        G-code optimiser
40     mopt        m-code optimiser
41
42 done in yale compiler:
43     (in flic)
44     optimization : \beta-redn (constant propagation & inlining)
45                    constant folding
46                    dead code elim
47     strictness analysis
48
49 the competition:
50
51     (mips compiler)
52         compiles to "ucode" (symbolic assembler)
53         optimisations on both ucode and binary assembler
54         -O2             global ucode optimizer
55         -O3             global register alloc
56         -feedback file
57         -cord           procedure re-arranger ; reduce cache conflicts
58         pixie           adds things to binary for profiling
59         pixstats        generate exec stats from a pixified pgm
60         prof            analyse profile data (pc-sampling, basic-blk counting)
61
62     data dependence analysis (pldi 91; \cite{maydan91a})
63     (nice table of stats-- pldi 91; \cite{goff91a}, p 25)
64
65     tiling for better cache hits (pldi 91: \cite{wolf91a})
66
67     using real or estimated runtime profiles (pldi 91: \cite{wall91a})
68
69     procedure merging w/ instruction caches (pldi 91: \cite{mcfarling91a})
70
71     fortran @ 10 Gflops (pldi 91: \cite{bromley91a})
72
73     global instr scheduling for superscalar machines (pldi 91: \cite{bernstein91a})