Features

From Libfirm

Jump to: navigation, search
  • works exclusively on a graph-based SSA representation ("sea of nodes") until assembler code emission. Based on the work of C. Click and M. Trapp
  • written in portable C. Known to run on MSVC 6-8 Win32, gcc on Linux, FreeBSD, Cygwin
  • includes doxygen documentation
  • support for object oriented type hierarchies
  • Analyses:
    • dominance
    • loop tree
    • execution frequency
    • control dependencies
    • inter-procedural call graph
    • rapid type
    • def-use
    • alias analysis
    • class hierarchy analysis
  • Optimisations:
    • dead code elimination (happens implicitly)
    • constant folding (happens on the fly)
    • local common subexpression elimination (happens on the fly)
    • arithmetic identities (happens on the fly)
    • unreachable code elimination
    • global common subexpression elimination
    • code placement
    • operator strength reduction
    • scalar replacement
    • load/store optimisation
    • control flow optimisations
    • if-conversion
    • partial condition evaluation
    • reassociation
    • tail recursion elimination
    • inlining
    • procedure cloning
  • extensive checkers
  • enhanced debugging support: breakpoints on node creation, entity creation, graph dumping, visual studio debug extension
  • lowering of intrinsics, double word arithmetics, bitfields
  • generic backend features:
    • novel SSA based register allocator
    • several spilling algorithms
    • several SSA copy coalescing algorithms
    • algorithms for instruction and basic block scheduling
    • ABI handling helpers
  • working ia32 backend with support for x87 and SSE2 floating point
  • unfinished backends for MIPS, ARM, PPC32
  • connections to the Edison Design Group C and Java frontends available.
Personal tools