COINS Compiler Infrastructure

1. Aims of the project

COINS (COmpiler INfraStructure) is a project to develop a compiler infrastructure which may be used as a base for constructing various compilers such as research compilers, educational compilers, and production compilers. COINS has two levels of intermediate representation, HIR: High-level Intermediate Representation, and LIR: Low-level Intermediate Representation. The infrastructure is composed of many components, such as front-ends, back-ends, various kind of optimizing and parallelizing modules. Optimizations and parallelizations are applied to HIR or LIR. Compiler developers can construct a compiler by selecting appropriate components. They may add their own components or modify some existing components to add new features to their compiler. The main aim of the project is to help compiler developers build good compilers in relatively short term and accelerate the development of compiler technology.

2. Benefit of using the COINS infrastructure

New compiling techniques can be implemented by adding or modifying a component without writing the rest of the compiler. For example, a compiler for a new machine can be built by adding a new code generator without developing the front-end. A compiler for a new language can be built by adding a new front-end without developing the back-end. Basic modules for code optimization and parallelization are available. Evaluation of compiling techniques becomes easy by comparing results based on the same infrastructure.

3. Structure of the COINS compiler

  Compiler control
Compiler driver
IR (Intermediate Representation) handler
HIR handler
LIR handler
Symbol handler
Front-end
C language front-end
Fortran front-end
Middle
Basic optimizer
Advanced optimizer
SSA (Static Single Assignment) optimizer
Basic parallelizer
SMP (Symmetric Multi-Processor) parallelizer
SIMD (Single Instruction Multiple Data stream) parallelizer
HIR-to-C source code generator
Back-end
Code generator-generator
Sparc machine code generator
x86 machine code generator
x86_64 machine code generator (64 bit x86)
ARM machine code generator
THUMB machine code generator
MIPS machine code generator
SH-4 machine code generator
PowerPC machine code generator
Alpha machine code generator
MicroBlaze machine code generator
Instruction scheduler
Software pipelining optimizer
LIR-to-C source code generator

All modules are written in Java for ease of extension and increase of reliability.

Download sites and alternate site of COINS

You can also access alternate sites of COINS
.

Acknowledgments

The development of COINS was supported by the Japanese Ministry of Education, Culture, Sports, Science and Technology, under Grant "Special Coordination Fund for Promoting Science and Technology" (2000-2004).
It was supported also by the Information-Technology Promotion Agency, Japan on 2005.
The maintenance and improvements of COINS are now going on by the Association of COINS Compiler Infrastructure.
Scores of persons have been making efforts to develop, maintain and support the COINS. Many of them are volunteers.
The opening of this web site was supported by the University of Electro-Communications and the Tokyo Institute of Technology. Currently, this web site is supported by the sourceforge.net and the osdn.jp.