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})
|