NEWS.md 9.96 KB
Newer Older
yb9976's avatar
yb9976 committed
1
libFirm 1.22.1 (2016-01-07)
Matthias Braun's avatar
Matthias Braun committed
2
---------------------------
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
* make: Fix cmake/make build
* ia32: New just in time compilation mode which compiles into a memory buffer
* amd64: Support PIC with PLT for ELF
* ia32: Add `ia32-get_ip={pop,thunk}`
* ia32: Generate `mov $~1, %r; rol x, %r` for `~(1 << x)`
* ia32: Generate `mov $~0x80000000, %r; ror x, %r` for `~(0x80000000 >> x)`
* be: Stub support for the asm constraint modifier `%`
* amd64, ia32: Support the asm constraint `e`
* amd64, ia32: Support the asm modifier `c`
* ia32: Support JIT compilation
* be: Improve permutation moving for copy coalescing
* ir: Improve handling of negative overflow in float to int tarval conversion
* amd64: Improve matching of immediates during instruction selection
* amd64: Add peephole optimization `mov $0, %r` -> `xorl %r, %r`
* amd64: Add peephole optimization `lea c(%r), %r` -> `add $c, %r`
* amd64: Add peephole optimization `lea (%r1, %r2), %r1` -> `add %r2, %r1` and the commutated case
* ia32: Add peephole optimization `lea c(, %i, 2), %d` -> `lea c(%i, %i), %d`
* ia32: Add peephole optimization `lea (%b), %d` -> `mov %b, %d`
* ia32: Add peephole optimization `testl $0x0000XX00, %eRx` -> `testb $0xXX, %Rh`
* ia32: Generate slightly better code to load the floating-point constants `-0.0` and `-1.0`
* amd64: Reduce number of stack adjustments
* api: Set the length of an array type solely when creating the array type
* api: Set whether a function type is variadic and its calling convention and additional properties solely when creating the function type
* api: Automatically infer the mode when creating Add, And, Div, Eor, Minus, Mod, Mul, Mulh, Mux, Not, Or, Shl, Shr, Shrs and Sub nodes
* api: Remove the notion of atomic entities, use the initializer access functions instead
* api: Remove visibility from types
* api: Remove the type flag `tf_variable_size`, test the array size for 0 instead
* api: Remove `plist`, use `pdeq` instead
* api: Remove `get_{class,segment,struct,union}_{ident,name}()`, use `get_compound_{ident,name}()` instead
* ir: Improve IR graph verifier
* 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
Christoph Mallon's avatar
Christoph Mallon committed
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`
Christoph Mallon's avatar
Christoph Mallon committed
51
* mips: Add new backend
52
* be: By default permutation lowering now uses copy instead swap
53
* Bugfixes
Matthias Braun's avatar
Matthias Braun committed
54

Christoph Mallon's avatar
Christoph Mallon committed
55
libFirm 1.22.0 (2015-12-31)
56
57
---------------------------
* Improved PIC support, linux/elf is now supported
Christoph Mallon's avatar
Christoph Mallon committed
58
* Many additional local optimization rules (instcombine)
59
* Inline assembly support for sparc/amd64
yb9976's avatar
yb9976 committed
60
* Improved constant bit analysis
61
* Improved load/store optimization, featuring compound value optimizations
yb9976's avatar
yb9976 committed
62
* Improved reassociation pass
Christoph Mallon's avatar
Christoph Mallon committed
63
* Improved amd64 (aka x86_64) backend, it is now able to bootstrap libfirm
64
65
66
67
68
* Improved arm backend (but still experimental)
* Improved inliner (can inline compound types)
* Compiletime performance improvements
* Cleanups and API simplifications
* Switch to C99 and corresponding code cleanup and simplification
Christoph Mallon's avatar
Christoph Mallon committed
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
* More details in dumped IR graphs
* Streamlined IR
* Improved IR graph verifiers
* Further unify backend infrastructure
* Support for arrays as parameter and return types
* Updated documentation
* Perform precise 80bit spilling for x87 floating point
* Improved permutation decomposition for copy coalescing
* Added bitwise 'don't care' analysis and use it for optimizing occult constants
* Support builtin 'saturating increment' (amd64, ia32, sparc)
* Improved generated code for division by constant
* Support builtin 'compare and swap' (amd64, ia32, sparc)
* Support alias entities
* Improved scalar conversion optimization
* Added store combine optimization
* Overhauled representation and handling of infinite loops
* Improved use of flag results generated as side effect of instructions (ia32)
* Improved calculation of execution frequency estimation for large graphs
* Improved instruction selection (amd64, arm, ia32, sparc)
* Improved x87 floating point code generation
* Support early clobbers in inline assembly
* Support x87 constraints in inline assembly (ia32)
91
* Support `__attribute__((visibility("hidden")))` and `__attribute__((visible("protected")))`
Christoph Mallon's avatar
Christoph Mallon committed
92
* Optionally use CMake as build system
93
* Support `make install` with the usual variables (INSTALLPREFIX, ...)
94
95
* Bugfixes

Matthias Braun's avatar
Matthias Braun committed
96
97
98
99
libFirm 1.21.0 (2012-11-16)
---------------------------
* Improvements of x86 backend (esp. x87 floatingpoint code)
* Improvements to sparc backend (better use of delay slots)
yb9976's avatar
yb9976 committed
100
* Improved local optimization rules (esp. conversions)
Matthias Braun's avatar
Matthias Braun committed
101
102
103
* Make compiler more deterministic
* Bugfixes

104
105
libFirm 1.20.0 (2011-12-07)
---------------------------
106

107
108
109
110
111
112
113
114
115
* Further improvemens to sparc backend (SPEC2000 works with softfloat)
* Tuning of x86 backend
* Software floatingpoint lowerer
* Fixed firm profiling
* New pass management allowing to specify pre-/postconditions for passes
* Remove dependency on liblpp, add support for gurobi ILP solver
* Experimental dwarf debugging support
* Code cleanups, refactoring
* Restructured API documentation
yb9976's avatar
yb9976 committed
116
* Bugfixes (we did a lot of csmith testing)
117

118
119
120
121
122
libFirm 1.19.1 (2011-05-17)
---------------------------

* Fix some set_XXX functions not being exported in the shared library

Matthias Braun's avatar
Matthias Braun committed
123
libFirm 1.19.0 (2011-03-15)
124
125
---------------------------

Matthias Braun's avatar
Matthias Braun committed
126
127
128
129
130
131
* Includes "SSA-Based Register Allocation with PBQP"
* Improved Sparc backend
* New (optimistic) fixpoint based value-range propagation/bit analysis
* Code cleanup and refactoring
* Bugfixes

Matthias Braun's avatar
Matthias Braun committed
132
libFirm 1.18.1 (2010-05-05)
133
134
---------------------------

Matthias Braun's avatar
Matthias Braun committed
135
* Fix bug where stackframe was not always setup for -fno-omit-frame-pointer
Matthias Braun's avatar
Matthias Braun committed
136
* bugfixes in Asm handling
Matthias Braun's avatar
Matthias Braun committed
137

138
139
140
libFirm 1.18.0 (2010-04-15)
---------------------------

Matthias Braun's avatar
Matthias Braun committed
141
* Includes "Preference Guided Register Assignment" algorithm
Matthias Braun's avatar
Matthias Braun committed
142
* Experimental Value Range Propagation
143
* Loop Inversion and experimental Loop Unrolling code
Matthias Braun's avatar
Matthias Braun committed
144
145
146
147
148
149
* Simplified construction interface. Most node constructors don't need graph/block arguments anymore.
* Reworked type interface. Type names are optional now. Support for additional linkage types that among others support C++ 'linkonce' semantics now.
* Small changes in constructors and node getters/setters (mostly adding 'const' to some getters)
* code cleanup, smaller improvements in API specification
* bugfixes

150
151
152
libFirm 1.17.0 (2009-05-15)
---------------------------

Matthias Braun's avatar
Matthias Braun committed
153
* bugfixes
yb9976's avatar
yb9976 committed
154
* advanced load/store optimization which hoists loads out of loops
Matthias Braun's avatar
Matthias Braun committed
155
156
157
158
* Internal restruturing: Alot of node structures are automatically generated
   from a specification file now.
* Add support for multiple calling conventions
* New experimental support for reading and writing programgraphs to disk
yb9976's avatar
yb9976 committed
159
* Support and optimizations for trampolines
Matthias Braun's avatar
Matthias Braun committed
160
161
* fix PIC support

162
163
164
libFirm 1.16.0 (2009-01-28)
---------------------------

Christoph Mallon's avatar
Christoph Mallon committed
165
* bugfixes
166
* support for builtin nodes
Christoph Mallon's avatar
Christoph Mallon committed
167

168
169
libFirm 1.15.0 (2008-12-01)
---------------------------
Matthias Braun's avatar
Matthias Braun committed
170
171
* bugfixes

172
173
174
libFirm 1.14.0 (2008-11-22)
---------------------------

yb9976's avatar
yb9976 committed
175
* Implementation of Clicks Combined Analysis/Optimizations
Matthias Braun's avatar
Matthias Braun committed
176
177
178
179
180
181
182
183
* New switch lowering code
* support for global asm statements
* improved asm support
* PIC support for Mac OS X
* New register pressure minimizing scheduler
* Improvements to spill algorithm
* fix endless loop problems
* further improve inlining heuristics
yb9976's avatar
yb9976 committed
184
* improve peephole optimizations for x86
Matthias Braun's avatar
Matthias Braun committed
185
186
* bugfixes

187
188
libFirm 1.13.0 (2008-07-31)
---------------------------
Michael Beck's avatar
Michael Beck committed
189

Michael Beck's avatar
updated    
Michael Beck committed
190
* VanDrunen's GVN-PRE fixed
Michael Beck's avatar
Michael Beck committed
191
* operator strength reduce fixed and improved
yb9976's avatar
typos    
yb9976 committed
192
* fixed 64bit code generation for some rare compare cases
Michael Beck's avatar
updated    
Michael Beck committed
193
* better tailrecursion optimization: handles x * func() and x + func()
yb9976's avatar
typos    
yb9976 committed
194
* improved inliner: better heuristics for inlining, can now inline recursive calls
Michael Beck's avatar
updated    
Michael Beck committed
195
* improved spiller
Michael Beck's avatar
updated    
Michael Beck committed
196
197
* lowering of CopyB nodes
* better memory disambiguator
Michael Beck's avatar
updated    
Michael Beck committed
198
* float->64bit conversion fixed for x87
199
* removed old verbosity level based debugging: all modules use the new debug facility
Michael Beck's avatar
updated    
Michael Beck committed
200
* Improved Confirm based optimization and conditional evaluation (using Confirm nodes)
Michael Beck's avatar
updated    
Michael Beck committed
201
* BugFixes: tail recursion, load/store optimization, lowering of structure return, conditional
Michael Beck's avatar
updated    
Michael Beck committed
202
  evaluation, removal of unused methods
Michael Beck's avatar
updated    
Michael Beck committed
203
* reduced numer of indirections for backend operation
Michael Beck's avatar
updated    
Michael Beck committed
204
* ia32 Backend: supports more CPU architectures
Michael Beck's avatar
updated    
Michael Beck committed
205
* ARM Backend: fixed frame access
Matthias Braun's avatar
Matthias Braun committed
206
* support for special segments (like constructors, destructors)
Michael Beck's avatar
Michael Beck committed
207

208
209
libFirm 1.12.1 (2008-02-18)
---------------------------
Matthias Braun's avatar
Matthias Braun committed
210
211
212
213

* bugfixes for new style initializers with bitfield types
* make lowerer look at constant initializers too

214
215
libFirm 1.12.0 (2008-02-14)
---------------------------
Matthias Braun's avatar
Matthias Braun committed
216

Matthias Braun's avatar
Matthias Braun committed
217
* dependency on libcore and libobstack dropped
Matthias Braun's avatar
Matthias Braun committed
218
219
220
221
* there's an alternative easier to use way to construct compound initializers
* bugfixes
* improved support for exceptions
* speed improvements
yb9976's avatar
yb9976 committed
222
* optimization of known libc functions
Matthias Braun's avatar
Matthias Braun committed
223

224
225
libFirm 1.11.0 (2008-11-05)
---------------------------
Matthias Braun's avatar
Matthias Braun committed
226
227
228
229
230
231

* Lots of bugfixes
* Compilation speed improved
* Completely improved and rewritten handling of x86 address mode
* Optimized Mul -> Lea,Shift,Add transformation
* 64bit operations fixed and improved
yb9976's avatar
yb9976 committed
232
233
* More local optimizations
* New backend peephole optimizations
Matthias Braun's avatar
Matthias Braun committed
234
* Explicit status flag modeling (only for x86 for now)
yb9976's avatar
yb9976 committed
235
* Improvements of Load/Store optimization and alias analysis
236
* All C benchmarks from Spec CINT2000 work now (with our edg frontend)