ANSI C Front-end
- LCC
- EDG C front-ends and other languages can be supported on request
Currently available targets
- ARM / Linux (provided as example)
- X86 / Linux (provided as example)
Documentation
- Framework architecture overview documentation
- Framework utilities guide
- Analyses, transformations, and optimizations writing guide
- Code generator user's guide
- Source code reference documentation
- Installation guide
Debug information support
- DWARF2 & 3
Other formats can be supported on request
Optimizations
- Constant Folding
- Basic Block Ordering
- Dead Code Elimination
- Local / Global Forward Substitution
- Strength Reduction
- Unreachable Code Elimination
- Dead Object Elimination
- Tail Merging
- Inliner
- Instruction Scheduler
- Variable Renaming
- Loop Invariant Code Motion
- Loop Inversion
- Local / Global Copy Propagation
- Local / Global Common Subexpression Elimination
- Code Straightening
- Jump Optimizations
- If Simplifications
- Induction Variable Strength Reduction
- Induction Variable Elimination
- Local / Global Register Allocation (Allocation by graph coloring, web building
and register coalescing)
Analyses
- Alias Analysis
- Induction Variables Analysis
- Definition-use, use-definition chains (both at high level and instruction level
intermediate representation)
- Control Flow Analysis (loops, dominators, post dominators, CFG is
maintained online)
- Data Flow Analysis (generic iterative data flow analyzer, and reaching
definitions, liveness, available expressions, copy assignments analyses, all
available at high level IR and instruction level if applicable)
Transformations
- IR Lowering Transformations (expression to function calls, member, array
index lowering )
- Data Dependence Analysis
Quality Features
- Defensive Programming
- Design by Contract
- Automatically Generated Reference Documentation
- Modular Architecture by use of Object Oriented Programming
Utilities
- IR dumping
- Flow graph dumping
- Debug/trace dumping
- Macros for Design by Contract
  • Ready to use rich set of optimizations, analyses, and transformations
  • Has its own intermediate representation (any front-end can be easily integrated)
  • Easy retargetability (rule based code generator with rich features)
  • Object oriented (written in C++, brings all advantages of object oriented programming,   e.g. reuse,
    encapsulation, design patterns, standard C++ library)
  • Modular (new transformations, and optimizations can be added without changing any other part of the
    framework)
  • Extensible (all internal components can be easily extended by object oriented programming, e.g.
    intermediate representation)
  • Flexible (utilities that can be used uniformly throughout the framework)
  • Complete (has all the features and utilities to develop a world class compiler)
  • Understandable (clean design and fully documented, tutorials, examples, and class, function
    reference documentation that is automatically generated from source code)
  • Developer friendly (Design by Contract, Defensive programming, Debug/Trace utilities shorten
    development and debugging time)
  • Multiple targets in one executable (unrelated targets can be switched from command line, e.g. it is
    possible to target different functions to different architectures, increases maintainability of multiple
    compilers)
  • Scoped analyses, transformations and optimizations (analyses, transformations, and optimizations
    can be applied to any scoped intermediate representation construct, e.g. to a statement or basic block
    or whole module).
List of features
CStar Retargetable Optimizing Compiler Framework
QuickC Version 1.0
© 2007-2010 CStar Software Tools Development b.v.
All Rights Reserved
Highlights