Changes in 1.17.0:
* bugfixes
* advanced load/store optimisation which hoists loads out of loops
* 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
* Support and optimisations for trampolines
* fix PIC support
Changes in 1.16.0:
* bugfixes
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
* Implementation of Clicks Combined Analysis/Optimisations
* 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
* improve peephole optimisations for x86
* bugfixes
libFIRM provides a graph-based intermediate representation (IR), which
operates exclusively in SSA-form, starting at IR construction until
assembler code emission. It offers many analyses and optimizations,
provides extensive debug support and includes a backend framework.
* analyses: dominance, loop tree, execution frequency, control
dependencies, call graph, rapid type, def-use, alias analysis,
class hierarchy analysis
* optimizations: dead code elimination (happens implicitly), constant
folding, local common subexpression elimination, arithmetic identities
(happens on the fly), unreachable code elimination, global common
subexpression elimination, code placement, strength reduction,
scalar replacement, if-conversion, load/store optimization, control
flow optimizations, reassociation, partial condition evaluation,
tail recursion elimination, inlining, procedure cloning
* enhanced debugging support: extensive checkers, breakpoints on node
creation, entity creation, graph dumping
* lowering of intrinsics, double word arithmetics, bitfields
* generic backend features:
* novel SSA based register allocator
* several SSA copy coalescing and spilling algorithms
* algorithms for instruction and basic block scheduling
* working ia32 backend, unfinished backends for MIPS, ARM, PPC32
* handwritten recursive descent C89/C99 frontend available (lang/cparser)