2 A graph based SSA intermediate representation
6 2. Building and Installation
10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 The Firm library implements the Firm intermediate representation (ir). An old
15 description of Firm can be found in [TLB:99].
17 libFirm contains algorithms for construction of the SSA form directly from the
18 attributed syntax tree. A set of analyses and optimisation phases is provided.
19 This version includes a complete backend for the IA32 architecture, as well as
20 some unfinished backends for MIPS, ARM, PPC32.
24 - works exculsively on a graph based SSA represenation up to the code emission.
25 Based on the work of C. Click and M. Trapp
26 - written in portable C. Known to run on msvc 6-8 Win32, gcc on Linux, FreeBSD,
28 - includes doxygen documentation
29 - support for object oriented type hierarchies
30 - Analyses: dominance, loop tree, execution frequency, control dependencies,
31 inter procedural call graph, rapid type, def-use, alias analysis,
32 class hierarchy analysis, ...
33 - Optimisations: constant folding, local common subexpression elimination,
34 global common subexpression elimination, code placement,
35 operator strength reduction, scalar replacement, load/store,
36 control flow optimisations, if-conversion, partial condition
37 evaluation, reassociation, tail recursion elimination,
38 inlining, procedure cloning, dead code elimination...
39 - local common subexpression eliminiation, constant folding,
40 constant propagatation, arithmetic identities happen implicitely
42 - enhanced debugging support: breakpoints on node creation, entity creation,
43 graph dumping, visual studio debug extension
44 - lowering of intrinsics, double word arithmetics, bitfields
45 - backend with SSA based register allocation including several algorithms for
46 spilling and copy coalescing. Instruction and block scheduling, support for
48 - working ia32 backend with support for x87 and SSE2 floating point
49 - unfinished backends for MIPS, ARM, PPC32
51 - connections to the Edison Design Group C and java frontends available.
53 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 2. Building and Installation
57 These are instruction for the gcc compiler on unix variants or cygwin. You need
58 to have the libcore library and pkg-config installed.
60 1. Change into the directory containing libfirms source
62 2. Create a directory named build 'mkdir build'. Change into this directory
63 and execute the configure script. 'cd build ; ../configure'
65 3. Type 'make' to compile the package
67 4. You may install libfirm as super user by typing 'make install'
69 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73 To generate FIRM code from a compiler frontend read the documentation
74 "libFIRM: A Library for Compiler Optimization Reaserch Implementing
75 Firm", UKA tech-report 2002-5. About Firm you can learn in UKA
79 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83 You can contact us at firm@ipd.info.uni-karlsruhe.de