revivie max_irg_visited
[libfirm] / README
1                                    libFirm
2                    A graph based SSA intermediate representation
3
4 Contents:
5 1. Introduction
6 2. Building and Installation
7 3. Usage
8 4. Contact
9
10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11
12 1. Introduction
13
14 The Firm library implements the Firm intermediate representation (ir). An old
15 description of Firm can be found in [TLB:99].
16
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.
21
22 1.1. Features
23
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,
27   Cygwin
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
41 - extensive checkers
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
47   ABI handling.
48 - working ia32 backend with support for x87 and SSE2 floating point
49 - unfinished backends for MIPS, ARM, PPC32
50
51 - connections to the Edison Design Group C and java frontends available.
52
53 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54
55 2. Building and Installation
56
57 These are instruction for the gcc compiler on unix variants or cygwin.
58
59  1. Change into the directory containing libfirms source
60
61  2. Create a directory named build 'mkdir build'. Change into this directory
62     and execute the configure script. 'cd build ; ../configure'
63
64  3. Type 'make' to compile the package
65
66  4. You may install libfirm as super user by typing 'make install'
67
68 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69
70 3. Usage
71
72 To generate FIRM code from a compiler frontend read the documentation
73 "libFIRM: A Library for Compiler Optimization Reaserch Implementing
74 Firm", UKA tech-report 2002-5. About Firm you can learn in UKA
75 tech-report 1999-14.
76
77
78 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79
80 4. Contact
81
82 You can contact us at
83         firm@ipd.info.uni-karlsruhe.de
84
85 There's a mailing list here:
86         https://lists.sourceforge.net/lists/listinfo/libfirm-user
87
88 We have a bugtracker at:
89         http://pp.info.uni-karlsruhe.de/~firm/bugs