- implemented get_irg_value_param_type()
[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. You need
58 to have the libcore library and pkg-config installed.
59
60  1. Change into the directory containing libfirms source
61
62  2. Create a directory named build 'mkdir build'. Change into this directory
63     and execute the configure script. 'cd build ; ../configure'
64
65  3. Type 'make' to compile the package
66
67  4. You may install libfirm as super user by typing 'make install'
68
69 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70
71 3. Usage
72
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
76 tech-report 1999-14.
77
78
79 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80
81 4. Contact
82
83 You can contact us at
84         firm@ipd.info.uni-karlsruhe.de
85
86 There's a mailing list here:
87         https://lists.sourceforge.net/lists/listinfo/libfirm-user
88
89 We have a bugtracker at:
90         http://pp.info.uni-karlsruhe.de/~firm/bugs