2 The design and implementation of
3 the EM Global Optimizer
8 Wiskundig Seminarium, Amsterdam
10 The EM Global Optimizer is part of the Amsterdam Compiler Kit,
11 a toolkit for making retargetable compilers.
12 It optimizes the intermediate code common to all compilers of
14 so it can be used for all programming languages and
15 all processors supported by the kit.
17 The optimizer is based on well-understood concepts like
18 control flow analysis and data flow analysis.
19 It performs the following optimizations:
20 Inline Substitution, Strength Reduction, Common Subexpression Elimination,
21 Stack Pollution, Cross Jumping, Branch Optimization, Copy Propagation,
22 Constant Propagation, Dead Code Elimination and Register Allocation.
24 This report describes the design of the optimizer and several
25 of its implementation issues.
32 This work was supported by the
33 Stichting Technische Wetenschappen (STW)
34 under grant VWI00.0001.
36 The EM Global Optimizer is part of a software toolkit
37 for making production-quality retargetable compilers.
39 called the Amsterdam Compiler Kit
41 tanenbaum toolkit rapport
44 tanenbaum toolkit cacm
48 *Unix is a Trademark of Bell Laboratories
52 The main design philosophy of the toolkit is to use
53 a language- and machine-independent
54 intermediate code, called EM.
58 The basic compilation process can be split up into
60 A language-specific front end translates the source program into EM.
61 A machine-specific back end transforms EM to assembly code
62 of the target machine.
64 The global optimizer is an optional phase of the
65 compilation process, and can be used to obtain
66 machine code of a higher quality.
67 The optimizer transforms EM-code to better EM-code,
68 so it comes between the front end and the back end.
69 It can be used with any combination of languages
70 and machines, as far as they are supported by
73 This report describes the design of the
74 global optimizer and several of its
75 implementation issues.
76 Measurements can be found in.