1libFirm 1.22.1 (2016-01-07)
2---------------------------
3* make: Fix cmake/make build
4* ia32: New just in time compilation mode which compiles into a memory buffer
5* amd64: Support PIC with PLT for ELF
6* ia32: Add `ia32-get_ip={pop,thunk}`
7* ia32: Generate `mov $~1, %r; rol x, %r` for `~(1 << x)`
8* ia32: Generate `mov $~0x80000000, %r; ror x, %r` for `~(0x80000000 >> x)`
9* be: Stub support for the asm constraint modifier `%`
10* amd64, ia32: Support the asm constraint `e`
11* amd64, ia32: Support the asm modifier `c`
12* ia32: Support JIT compilation
13* be: Improve permutation moving for copy coalescing
14* ir: Improve handling of negative overflow in float to int tarval conversion
15* amd64: Improve matching of immediates during instruction selection
16* amd64: Add peephole optimization `mov $0, %r` -> `xorl %r, %r`
17* amd64: Add peephole optimization `lea c(%r), %r` -> `add $c, %r`
18* amd64: Add peephole optimization `lea (%r1, %r2), %r1` -> `add %r2, %r1` and the commutated case
19* ia32: Add peephole optimization `lea c(, %i, 2), %d` -> `lea c(%i, %i), %d`
20* ia32: Add peephole optimization `lea (%b), %d` -> `mov %b, %d`
21* ia32: Add peephole optimization `testl $0x0000XX00, %eRx` -> `testb $0xXX, %Rh`
22* ia32: Generate slightly better code to load the floating-point constants `-0.0` and `-1.0`
23* amd64: Reduce number of stack adjustments
24* api: Set the length of an array type solely when creating the array type
25* api: Set whether a function type is variadic and its calling convention and additional properties solely when creating the function type
26* api: Automatically infer the mode when creating Add, And, Div, Eor, Minus, Mod, Mul, Mulh, Mux, Not, Or, Shl, Shr, Shrs and Sub nodes
27* api: Remove the notion of atomic entities, use the initializer access functions instead
28* api: Remove visibility from types
29* api: Remove the type flag `tf_variable_size`, test the array size for 0 instead
30* api: Remove `plist`, use `pdeq` instead
31* api: Remove `get_{class,segment,struct,union}_{ident,name}()`, use `get_compound_{ident,name}()` instead
32* ir: Improve IR graph verifier
33* arm: Improve address mode use in instruction selection
34* be, ir: Improve preservation of debug info during transformations
35* amd64: Improve use of `lea` in instruction selection
36* sparc: Support the asm constaint `K`
37* sparc: Support computed goto
38* arm: Support computed goto
39* opt: Simplify computed goto with known destination to unconditional branch
40* opt: Handle constant folding for the builtins `clz`, `ctz`, `ffs`, `parity` and `popcount`
41* arm: Avoid redundant sign/zero extension right after a load
42* amd64, arm: Avoid redundant sign/zero extension right before a store
43* amd64: Avoid redundant sign/zero extension for truncation
44* amd64: Mark floating point constants as candidates for rematerialization
45* amd64: Improve block schedule by removing empty basic blocks
46* amd64: Use cltd/cqto for sign extension before a division
47* amd64: Use store with immediate for call arguments
48* opt: Add local optimization `a * b [-1 <= b <= 0] -> -(a & b)`
49* sparc: More strict checking of modifiers of placeholders in asm templates
50* arm: Support inline asm with with constraints `I`, `J`, `K`, `L`, `M`, `Q`, `g`, `i`, `l`, `m`, `n` and `r` as well as modifiers `B`, `C` and `c`
51* mips: Add new backend
52* be: By default permutation lowering now uses copy instead swap
53* amd64: Improve code generation for `v & 0xFF/0xFFFF/0xFFFFFFFF`
54* amd64, ia32: Always use potentially smaller address mode c(x,x,1) instead of c(,x,2)
55* opt: Add local optimization `a >>s b >>u (n - 1) -> a >>u (n - 1)`
56* ia32: Improve code generation for 64 bit multiplication if the lower half of a factor is 0 or 1
57* Bugfixes
58
59libFirm 1.22.0 (2015-12-31)
60---------------------------
61* Improved PIC support, linux/elf is now supported
62* Many additional local optimization rules (instcombine)
63* Inline assembly support for sparc/amd64
64* Improved constant bit analysis
65* Improved load/store optimization, featuring compound value optimizations
66* Improved reassociation pass
67* Improved amd64 (aka x86_64) backend, it is now able to bootstrap libfirm
68* Improved arm backend (but still experimental)
69* Improved inliner (can inline compound types)
70* Compiletime performance improvements
71* Cleanups and API simplifications
72* Switch to C99 and corresponding code cleanup and simplification
73* More details in dumped IR graphs
74* Streamlined IR
75* Improved IR graph verifiers
76* Further unify backend infrastructure
77* Support for arrays as parameter and return types
78* Updated documentation
79* Perform precise 80bit spilling for x87 floating point
80* Improved permutation decomposition for copy coalescing
81* Added bitwise 'don't care' analysis and use it for optimizing occult constants
82* Support builtin 'saturating increment' (amd64, ia32, sparc)
83* Improved generated code for division by constant
84* Support builtin 'compare and swap' (amd64, ia32, sparc)
85* Support alias entities
86* Improved scalar conversion optimization
87* Added store combine optimization
88* Overhauled representation and handling of infinite loops
89* Improved use of flag results generated as side effect of instructions (ia32)
90* Improved calculation of execution frequency estimation for large graphs
91* Improved instruction selection (amd64, arm, ia32, sparc)
92* Improved x87 floating point code generation
93* Support early clobbers in inline assembly
94* Support x87 constraints in inline assembly (ia32)
95* Support `__attribute__((visibility("hidden")))` and `__attribute__((visible("protected")))`
96* Optionally use CMake as build system
97* Support `make install` with the usual variables (INSTALLPREFIX, ...)
98* Bugfixes
99
100libFirm 1.21.0 (2012-11-16)
101---------------------------
102* Improvements of x86 backend (esp. x87 floatingpoint code)
103* Improvements to sparc backend (better use of delay slots)
104* Improved local optimization rules (esp. conversions)
105* Make compiler more deterministic
106* Bugfixes
107
108libFirm 1.20.0 (2011-12-07)
109---------------------------
110
111* Further improvemens to sparc backend (SPEC2000 works with softfloat)
112* Tuning of x86 backend
113* Software floatingpoint lowerer
114* Fixed firm profiling
115* New pass management allowing to specify pre-/postconditions for passes
116* Remove dependency on liblpp, add support for gurobi ILP solver
117* Experimental dwarf debugging support
118* Code cleanups, refactoring
119* Restructured API documentation
120* Bugfixes (we did a lot of csmith testing)
121
122libFirm 1.19.1 (2011-05-17)
123---------------------------
124
125* Fix some set_XXX functions not being exported in the shared library
126
127libFirm 1.19.0 (2011-03-15)
128---------------------------
129
130* Includes "SSA-Based Register Allocation with PBQP"
131* Improved Sparc backend
132* New (optimistic) fixpoint based value-range propagation/bit analysis
133* Code cleanup and refactoring
134* Bugfixes
135
136libFirm 1.18.1 (2010-05-05)
137---------------------------
138
139* Fix bug where stackframe was not always setup for -fno-omit-frame-pointer
140* bugfixes in Asm handling
141
142libFirm 1.18.0 (2010-04-15)
143---------------------------
144
145* Includes "Preference Guided Register Assignment" algorithm
146* Experimental Value Range Propagation
147* Loop Inversion and experimental Loop Unrolling code
148* Simplified construction interface. Most node constructors don't need graph/block arguments anymore.
149* Reworked type interface. Type names are optional now. Support for additional linkage types that among others support C++ 'linkonce' semantics now.
150* Small changes in constructors and node getters/setters (mostly adding 'const' to some getters)
151* code cleanup, smaller improvements in API specification
152* bugfixes
153
154libFirm 1.17.0 (2009-05-15)
155---------------------------
156
157* bugfixes
158* advanced load/store optimization which hoists loads out of loops
159* Internal restruturing: Alot of node structures are automatically generated
160   from a specification file now.
161* Add support for multiple calling conventions
162* New experimental support for reading and writing programgraphs to disk
163* Support and optimizations for trampolines
164* fix PIC support
165
166libFirm 1.16.0 (2009-01-28)
167---------------------------
168
169* bugfixes
170* support for builtin nodes
171
172libFirm 1.15.0 (2008-12-01)
173---------------------------
174* bugfixes
175
176libFirm 1.14.0 (2008-11-22)
177---------------------------
178
179* Implementation of Clicks Combined Analysis/Optimizations
180* New switch lowering code
181* support for global asm statements
182* improved asm support
183* PIC support for Mac OS X
184* New register pressure minimizing scheduler
185* Improvements to spill algorithm
186* fix endless loop problems
187* further improve inlining heuristics
188* improve peephole optimizations for x86
189* bugfixes
190
191libFirm 1.13.0 (2008-07-31)
192---------------------------
193
194* VanDrunen's GVN-PRE fixed
195* operator strength reduce fixed and improved
196* fixed 64bit code generation for some rare compare cases
197* better tailrecursion optimization: handles x * func() and x + func()
198* improved inliner: better heuristics for inlining, can now inline recursive calls
199* improved spiller
200* lowering of CopyB nodes
201* better memory disambiguator
202* float->64bit conversion fixed for x87
203* removed old verbosity level based debugging: all modules use the new debug facility
204* Improved Confirm based optimization and conditional evaluation (using Confirm nodes)
205* BugFixes: tail recursion, load/store optimization, lowering of structure return, conditional
206  evaluation, removal of unused methods
207* reduced numer of indirections for backend operation
208* ia32 Backend: supports more CPU architectures
209* ARM Backend: fixed frame access
210* support for special segments (like constructors, destructors)
211
212libFirm 1.12.1 (2008-02-18)
213---------------------------
214
215* bugfixes for new style initializers with bitfield types
216* make lowerer look at constant initializers too
217
218libFirm 1.12.0 (2008-02-14)
219---------------------------
220
221* dependency on libcore and libobstack dropped
222* there's an alternative easier to use way to construct compound initializers
223* bugfixes
224* improved support for exceptions
225* speed improvements
226* optimization of known libc functions
227
228libFirm 1.11.0 (2008-11-05)
229---------------------------
230
231* Lots of bugfixes
232* Compilation speed improved
233* Completely improved and rewritten handling of x86 address mode
234* Optimized Mul -> Lea,Shift,Add transformation
235* 64bit operations fixed and improved
236* More local optimizations
237* New backend peephole optimizations
238* Explicit status flag modeling (only for x86 for now)
239* Improvements of Load/Store optimization and alias analysis
240* All C benchmarks from Spec CINT2000 work now (with our edg frontend)
241