summaryrefslogtreecommitdiff
path: root/ghc/docs/add_to_compiler/state-of-play.NOTES
blob: cdfa7d83f00852f9bf96513ff668ee174b8dc997 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
analyses:
    strictness & binding-time analysis  (\cite{launchbury91a})
    polymorphic-instance analysis (pldi 91; referred \cite{launchbury91a}, p 86 top left)
    facet analysis (part of [higher-order offline] parameterized partial evaluation)
	(pldi 91: \cite{consel91a})
    binding-time analysis (fpca89; \cite{mogensen91})
    strictness analysis (\cite{wadler87a})
    update analysis (fpca; \cite{bloss89b})
    path analysis (fpca; \cite{bloss89b})
    interference, closure, and lifetime analysis (fpca; \cite{sestoft89a})
    stacklessness anaysis (fpca; \cite{lester89b})
    liveness analysis (AHU, reffed by lester89b)
    complexity analysis (fpca, \cite{rosendahl89a})
    demand analysis
    time analysis

type systems:
    refinement types (pldi 91; \cite{freeman91a})
    soft typing (pldi 91; \cite{cartwright91a})

other:

done in LML compiler:
    llift	lambda lifter
    	/Bconv
    simpl
	/asimpl	arithmetic simplifications
	/casetr	case of case ... (& a couple of others ?)
	/mlet	mlet (inlining) ?
	/simpl	constant folding, casefold, Esimpl, simpl,
		force arity, movelam
    strict	very simple strictness analysis
    transform
	/case	caseelim
    	/casep	condjoin
	/constr constrtr
	/lettrans let transformations
    unrec
    Gopt	G-code optimiser
    mopt	m-code optimiser

done in yale compiler:
    (in flic)
    optimization : \beta-redn (constant propagation & inlining)
		   constant folding
		   dead code elim
    strictness analysis

the competition:

    (mips compiler)
	compiles to "ucode" (symbolic assembler)
	optimisations on both ucode and binary assembler
	-O2		global ucode optimizer
	-O3		global register alloc
	-feedback file
	-cord		procedure re-arranger ; reduce cache conflicts
	pixie		adds things to binary for profiling
	pixstats	generate exec stats from a pixified pgm
	prof		analyse profile data (pc-sampling, basic-blk counting)

    data dependence analysis (pldi 91; \cite{maydan91a})
    (nice table of stats-- pldi 91; \cite{goff91a}, p 25)

    tiling for better cache hits (pldi 91: \cite{wolf91a})

    using real or estimated runtime profiles (pldi 91: \cite{wall91a})

    procedure merging w/ instruction caches (pldi 91: \cite{mcfarling91a})

    fortran @ 10 Gflops (pldi 91: \cite{bromley91a})

    global instr scheduling for superscalar machines (pldi 91: \cite{bernstein91a})