14bf779b6SSebastian BuchwaldlibFirm 1.22.1 (2016-01-07)
2a37a0e59SMatthias Braun---------------------------
3877486b7SChristoph Mallon* make: Fix cmake/make build
4877486b7SChristoph Mallon* ia32: New just in time compilation mode which compiles into a memory buffer
5877486b7SChristoph Mallon* amd64: Support PIC with PLT for ELF
6877486b7SChristoph Mallon* ia32: Add `ia32-get_ip={pop,thunk}`
7877486b7SChristoph Mallon* ia32: Generate `mov $~1, %r; rol x, %r` for `~(1 << x)`
8877486b7SChristoph Mallon* ia32: Generate `mov $~0x80000000, %r; ror x, %r` for `~(0x80000000 >> x)`
9877486b7SChristoph Mallon* be: Stub support for the asm constraint modifier `%`
10877486b7SChristoph Mallon* amd64, ia32: Support the asm constraint `e`
11877486b7SChristoph Mallon* amd64, ia32: Support the asm modifier `c`
12877486b7SChristoph Mallon* ia32: Support JIT compilation
13877486b7SChristoph Mallon* be: Improve permutation moving for copy coalescing
14877486b7SChristoph Mallon* ir: Improve handling of negative overflow in float to int tarval conversion
15877486b7SChristoph Mallon* amd64: Improve matching of immediates during instruction selection
16877486b7SChristoph Mallon* amd64: Add peephole optimization `mov $0, %r` -> `xorl %r, %r`
17877486b7SChristoph Mallon* amd64: Add peephole optimization `lea c(%r), %r` -> `add $c, %r`
18877486b7SChristoph Mallon* amd64: Add peephole optimization `lea (%r1, %r2), %r1` -> `add %r2, %r1` and the commutated case
19877486b7SChristoph Mallon* ia32: Add peephole optimization `lea c(, %i, 2), %d` -> `lea c(%i, %i), %d`
20877486b7SChristoph Mallon* ia32: Add peephole optimization `lea (%b), %d` -> `mov %b, %d`
21877486b7SChristoph Mallon* ia32: Add peephole optimization `testl $0x0000XX00, %eRx` -> `testb $0xXX, %Rh`
22877486b7SChristoph Mallon* ia32: Generate slightly better code to load the floating-point constants `-0.0` and `-1.0`
23877486b7SChristoph Mallon* amd64: Reduce number of stack adjustments
24877486b7SChristoph Mallon* api: Set the length of an array type solely when creating the array type
25877486b7SChristoph Mallon* api: Set whether a function type is variadic and its calling convention and additional properties solely when creating the function type
26877486b7SChristoph Mallon* api: Automatically infer the mode when creating Add, And, Div, Eor, Minus, Mod, Mul, Mulh, Mux, Not, Or, Shl, Shr, Shrs and Sub nodes
27877486b7SChristoph Mallon* api: Remove the notion of atomic entities, use the initializer access functions instead
28877486b7SChristoph Mallon* api: Remove visibility from types
29877486b7SChristoph Mallon* api: Remove the type flag `tf_variable_size`, test the array size for 0 instead
30877486b7SChristoph Mallon* api: Remove `plist`, use `pdeq` instead
31877486b7SChristoph Mallon* api: Remove `get_{class,segment,struct,union}_{ident,name}()`, use `get_compound_{ident,name}()` instead
32877486b7SChristoph Mallon* ir: Improve IR graph verifier
33877486b7SChristoph Mallon* arm: Improve address mode use in instruction selection
34d43adbf1SChristoph Mallon* be, ir: Improve preservation of debug info during transformations
35877486b7SChristoph Mallon* amd64: Improve use of `lea` in instruction selection
36a48628efSChristoph Mallon* sparc: Support the asm constaint `K`
37762a36f9SChristoph Mallon* sparc: Support computed goto
3839eb7f19SChristoph Mallon* arm: Support computed goto
392f191c89SChristoph Mallon* opt: Simplify computed goto with known destination to unconditional branch
40f9649062SChristoph Mallon* opt: Handle constant folding for the builtins `clz`, `ctz`, `ffs`, `parity` and `popcount`
415265f892SChristoph Mallon* arm: Avoid redundant sign/zero extension right after a load
42be1637faSChristoph Mallon* amd64, arm: Avoid redundant sign/zero extension right before a store
43c729c0b7SChristoph Mallon* amd64: Avoid redundant sign/zero extension for truncation
44c52de77fSChristoph Mallon* amd64: Mark floating point constants as candidates for rematerialization
457ba4777eSChristoph Mallon* amd64: Improve block schedule by removing empty basic blocks
4664e6f360SChristoph Mallon* amd64: Use cltd/cqto for sign extension before a division
4724c5a97fSChristoph Mallon* amd64: Use store with immediate for call arguments
48bc96c024SChristoph Mallon* opt: Add local optimization `a * b [-1 <= b <= 0] -> -(a & b)`
49fdc7090eSChristoph Mallon* sparc: More strict checking of modifiers of placeholders in asm templates
503bffaeadSChristoph Mallon* 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`
519cf2541cSChristoph Mallon* mips: Add new backend
529e01dc11SChristoph Mallon* be: By default permutation lowering now uses copy instead swap
531e657c5cSChristoph Mallon* amd64: Improve code generation for `v & 0xFF/0xFFFF/0xFFFFFFFF`
54c70b98aeSChristoph Mallon* amd64, ia32: Always use potentially smaller address mode c(x,x,1) instead of c(,x,2)
55234a721dSChristoph Mallon* opt: Add local optimization `a >>s b >>u (n - 1) -> a >>u (n - 1)`
5641c07f86SChristoph Mallon* ia32: Improve code generation for 64 bit multiplication if the lower half of a factor is 0 or 1
57ed63710bSChristoph Mallon* Bugfixes
58a37a0e59SMatthias Braun
592259fe47SChristoph MallonlibFirm 1.22.0 (2015-12-31)
60c1cbf50cSMatthias Braun---------------------------
61c1cbf50cSMatthias Braun* Improved PIC support, linux/elf is now supported
622259fe47SChristoph Mallon* Many additional local optimization rules (instcombine)
63c1cbf50cSMatthias Braun* Inline assembly support for sparc/amd64
645336cab4SSebastian Buchwald* Improved constant bit analysis
65c1cbf50cSMatthias Braun* Improved load/store optimization, featuring compound value optimizations
665336cab4SSebastian Buchwald* Improved reassociation pass
672259fe47SChristoph Mallon* Improved amd64 (aka x86_64) backend, it is now able to bootstrap libfirm
68c1cbf50cSMatthias Braun* Improved arm backend (but still experimental)
69c1cbf50cSMatthias Braun* Improved inliner (can inline compound types)
70c1cbf50cSMatthias Braun* Compiletime performance improvements
71c1cbf50cSMatthias Braun* Cleanups and API simplifications
72c1cbf50cSMatthias Braun* Switch to C99 and corresponding code cleanup and simplification
732259fe47SChristoph Mallon* More details in dumped IR graphs
742259fe47SChristoph Mallon* Streamlined IR
752259fe47SChristoph Mallon* Improved IR graph verifiers
762259fe47SChristoph Mallon* Further unify backend infrastructure
772259fe47SChristoph Mallon* Support for arrays as parameter and return types
782259fe47SChristoph Mallon* Updated documentation
792259fe47SChristoph Mallon* Perform precise 80bit spilling for x87 floating point
802259fe47SChristoph Mallon* Improved permutation decomposition for copy coalescing
812259fe47SChristoph Mallon* Added bitwise 'don't care' analysis and use it for optimizing occult constants
822259fe47SChristoph Mallon* Support builtin 'saturating increment' (amd64, ia32, sparc)
832259fe47SChristoph Mallon* Improved generated code for division by constant
842259fe47SChristoph Mallon* Support builtin 'compare and swap' (amd64, ia32, sparc)
852259fe47SChristoph Mallon* Support alias entities
862259fe47SChristoph Mallon* Improved scalar conversion optimization
872259fe47SChristoph Mallon* Added store combine optimization
882259fe47SChristoph Mallon* Overhauled representation and handling of infinite loops
892259fe47SChristoph Mallon* Improved use of flag results generated as side effect of instructions (ia32)
902259fe47SChristoph Mallon* Improved calculation of execution frequency estimation for large graphs
912259fe47SChristoph Mallon* Improved instruction selection (amd64, arm, ia32, sparc)
922259fe47SChristoph Mallon* Improved x87 floating point code generation
932259fe47SChristoph Mallon* Support early clobbers in inline assembly
942259fe47SChristoph Mallon* Support x87 constraints in inline assembly (ia32)
95c6223ed0SMatthias Braun* Support `__attribute__((visibility("hidden")))` and `__attribute__((visible("protected")))`
962259fe47SChristoph Mallon* Optionally use CMake as build system
97c6223ed0SMatthias Braun* Support `make install` with the usual variables (INSTALLPREFIX, ...)
98c1cbf50cSMatthias Braun* Bugfixes
99c1cbf50cSMatthias Braun
1007a4389d6SMatthias BraunlibFirm 1.21.0 (2012-11-16)
1017a4389d6SMatthias Braun---------------------------
1027a4389d6SMatthias Braun* Improvements of x86 backend (esp. x87 floatingpoint code)
1037a4389d6SMatthias Braun* Improvements to sparc backend (better use of delay slots)
10420eb9c9eSSebastian Buchwald* Improved local optimization rules (esp. conversions)
1057a4389d6SMatthias Braun* Make compiler more deterministic
1067a4389d6SMatthias Braun* Bugfixes
1077a4389d6SMatthias Braun
1083c41f51dSMatthias BraunlibFirm 1.20.0 (2011-12-07)
1093c41f51dSMatthias Braun---------------------------
110cbf27d47SMatthias Braun
1113c41f51dSMatthias Braun* Further improvemens to sparc backend (SPEC2000 works with softfloat)
1123c41f51dSMatthias Braun* Tuning of x86 backend
1133c41f51dSMatthias Braun* Software floatingpoint lowerer
1143c41f51dSMatthias Braun* Fixed firm profiling
1153c41f51dSMatthias Braun* New pass management allowing to specify pre-/postconditions for passes
1163c41f51dSMatthias Braun* Remove dependency on liblpp, add support for gurobi ILP solver
1173c41f51dSMatthias Braun* Experimental dwarf debugging support
1183c41f51dSMatthias Braun* Code cleanups, refactoring
1193c41f51dSMatthias Braun* Restructured API documentation
12007c014b0SSebastian Buchwald* Bugfixes (we did a lot of csmith testing)
121cbf27d47SMatthias Braun
122d217f68aSMatthias BraunlibFirm 1.19.1 (2011-05-17)
123d217f68aSMatthias Braun---------------------------
124d217f68aSMatthias Braun
125d217f68aSMatthias Braun* Fix some set_XXX functions not being exported in the shared library
126d217f68aSMatthias Braun
127eb5e382bSMatthias BraunlibFirm 1.19.0 (2011-03-15)
12845271bfeSMatthias Braun---------------------------
12945271bfeSMatthias Braun
13097965025SMatthias Braun* Includes "SSA-Based Register Allocation with PBQP"
13197965025SMatthias Braun* Improved Sparc backend
13297965025SMatthias Braun* New (optimistic) fixpoint based value-range propagation/bit analysis
13397965025SMatthias Braun* Code cleanup and refactoring
13497965025SMatthias Braun* Bugfixes
13597965025SMatthias Braun
136eb5e382bSMatthias BraunlibFirm 1.18.1 (2010-05-05)
13745271bfeSMatthias Braun---------------------------
13845271bfeSMatthias Braun
139ea1a634fSMatthias Braun* Fix bug where stackframe was not always setup for -fno-omit-frame-pointer
14025bffc94SMatthias Braun* bugfixes in Asm handling
141ea1a634fSMatthias Braun
14245271bfeSMatthias BraunlibFirm 1.18.0 (2010-04-15)
14345271bfeSMatthias Braun---------------------------
14445271bfeSMatthias Braun
14504c50eaaSMatthias Braun* Includes "Preference Guided Register Assignment" algorithm
14660aee65eSMatthias Braun* Experimental Value Range Propagation
1479c47bb54SMatthias Braun* Loop Inversion and experimental Loop Unrolling code
14804c50eaaSMatthias Braun* Simplified construction interface. Most node constructors don't need graph/block arguments anymore.
14904c50eaaSMatthias Braun* Reworked type interface. Type names are optional now. Support for additional linkage types that among others support C++ 'linkonce' semantics now.
15004c50eaaSMatthias Braun* Small changes in constructors and node getters/setters (mostly adding 'const' to some getters)
15104c50eaaSMatthias Braun* code cleanup, smaller improvements in API specification
15204c50eaaSMatthias Braun* bugfixes
15304c50eaaSMatthias Braun
15445271bfeSMatthias BraunlibFirm 1.17.0 (2009-05-15)
15545271bfeSMatthias Braun---------------------------
15645271bfeSMatthias Braun
15733fe86caSMatthias Braun* bugfixes
15820eb9c9eSSebastian Buchwald* advanced load/store optimization which hoists loads out of loops
15933fe86caSMatthias Braun* Internal restruturing: Alot of node structures are automatically generated
16033fe86caSMatthias Braun   from a specification file now.
16133fe86caSMatthias Braun* Add support for multiple calling conventions
16233fe86caSMatthias Braun* New experimental support for reading and writing programgraphs to disk
16320eb9c9eSSebastian Buchwald* Support and optimizations for trampolines
16433fe86caSMatthias Braun* fix PIC support
16533fe86caSMatthias Braun
16645271bfeSMatthias BraunlibFirm 1.16.0 (2009-01-28)
16745271bfeSMatthias Braun---------------------------
16845271bfeSMatthias Braun
169cafbc21bSChristoph Mallon* bugfixes
170bbcec654SMatthias Braun* support for builtin nodes
171cafbc21bSChristoph Mallon
17245271bfeSMatthias BraunlibFirm 1.15.0 (2008-12-01)
17345271bfeSMatthias Braun---------------------------
1744578483fSMatthias Braun* bugfixes
1754578483fSMatthias Braun
17645271bfeSMatthias BraunlibFirm 1.14.0 (2008-11-22)
17745271bfeSMatthias Braun---------------------------
17845271bfeSMatthias Braun
17920eb9c9eSSebastian Buchwald* Implementation of Clicks Combined Analysis/Optimizations
1804578483fSMatthias Braun* New switch lowering code
1814578483fSMatthias Braun* support for global asm statements
1824578483fSMatthias Braun* improved asm support
1834578483fSMatthias Braun* PIC support for Mac OS X
1844578483fSMatthias Braun* New register pressure minimizing scheduler
1854578483fSMatthias Braun* Improvements to spill algorithm
1864578483fSMatthias Braun* fix endless loop problems
1874578483fSMatthias Braun* further improve inlining heuristics
18820eb9c9eSSebastian Buchwald* improve peephole optimizations for x86
1894578483fSMatthias Braun* bugfixes
1904578483fSMatthias Braun
19145271bfeSMatthias BraunlibFirm 1.13.0 (2008-07-31)
19245271bfeSMatthias Braun---------------------------
193d5b9efeeSMichael Beck
1944e4db2ecSMichael Beck* VanDrunen's GVN-PRE fixed
195d5b9efeeSMichael Beck* operator strength reduce fixed and improved
19670a76105SSebastian Buchwald* fixed 64bit code generation for some rare compare cases
1973486862dSMichael Beck* better tailrecursion optimization: handles x * func() and x + func()
19870a76105SSebastian Buchwald* improved inliner: better heuristics for inlining, can now inline recursive calls
1994e4db2ecSMichael Beck* improved spiller
2008afb7216SMichael Beck* lowering of CopyB nodes
2018afb7216SMichael Beck* better memory disambiguator
2023486862dSMichael Beck* float->64bit conversion fixed for x87
203cce67bd3SMoritz Kroll* removed old verbosity level based debugging: all modules use the new debug facility
204481f389dSMichael Beck* Improved Confirm based optimization and conditional evaluation (using Confirm nodes)
2057c090a6fSMichael Beck* BugFixes: tail recursion, load/store optimization, lowering of structure return, conditional
2064e4db2ecSMichael Beck  evaluation, removal of unused methods
207481f389dSMichael Beck* reduced numer of indirections for backend operation
2087c090a6fSMichael Beck* ia32 Backend: supports more CPU architectures
209481f389dSMichael Beck* ARM Backend: fixed frame access
210f3f6b412SMatthias Braun* support for special segments (like constructors, destructors)
211d5b9efeeSMichael Beck
21245271bfeSMatthias BraunlibFirm 1.12.1 (2008-02-18)
21345271bfeSMatthias Braun---------------------------
214240301b9SMatthias Braun
215240301b9SMatthias Braun* bugfixes for new style initializers with bitfield types
216240301b9SMatthias Braun* make lowerer look at constant initializers too
217240301b9SMatthias Braun
21845271bfeSMatthias BraunlibFirm 1.12.0 (2008-02-14)
21945271bfeSMatthias Braun---------------------------
220c73539aaSMatthias Braun
2217a6fb312SMatthias Braun* dependency on libcore and libobstack dropped
222c73539aaSMatthias Braun* there's an alternative easier to use way to construct compound initializers
223c73539aaSMatthias Braun* bugfixes
224c73539aaSMatthias Braun* improved support for exceptions
225c73539aaSMatthias Braun* speed improvements
22620eb9c9eSSebastian Buchwald* optimization of known libc functions
227c73539aaSMatthias Braun
22845271bfeSMatthias BraunlibFirm 1.11.0 (2008-11-05)
22945271bfeSMatthias Braun---------------------------
23089fa73d3SMatthias Braun
23189fa73d3SMatthias Braun* Lots of bugfixes
23289fa73d3SMatthias Braun* Compilation speed improved
23389fa73d3SMatthias Braun* Completely improved and rewritten handling of x86 address mode
23489fa73d3SMatthias Braun* Optimized Mul -> Lea,Shift,Add transformation
23589fa73d3SMatthias Braun* 64bit operations fixed and improved
23620eb9c9eSSebastian Buchwald* More local optimizations
23720eb9c9eSSebastian Buchwald* New backend peephole optimizations
23889fa73d3SMatthias Braun* Explicit status flag modeling (only for x86 for now)
23920eb9c9eSSebastian Buchwald* Improvements of Load/Store optimization and alias analysis
24045271bfeSMatthias Braun* All C benchmarks from Spec CINT2000 work now (with our edg frontend)
241