libFirm

libFirm is a library that provides an intermediate representation and optimizations for compilers.
Download

libFirm Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Matze Braun
  • Publisher web site:
  • http://www.info.uni-karlsruhe.de/software/libfirm

libFirm Tags


libFirm Description

libFirm is a library that provides an intermediate representation and optimizations for compilers. libFirm is a library that provides an intermediate representation and optimizations for compilers. Programs are represented in a graph based SSA form. Firm is used to represent computer programs in a computer program in order to analyze and transform it. Firm's main application is compiler construction where we use it to represent, optimize and transform C and Java programs to native machine code. Here are some key features of "libFirm": · 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 Optimizations: · 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 optimization · control flow optimizations · 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. What's New in This Release: · 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


libFirm Related Software