Fortran

DMS Software Reengineering Toolkit

Sunday, April 18th, 2004

Thanks to Ira Baxter for a pointer to the DMS Software Reengineering Toolkit. According to the web page,

The DMS Software Reengineering Toolkit is a set of tools for automating customized source program analysis, modification or translation or generation of software systems, containing arbitrary mixtures of languages (”domains”). The term “software” for DMS is very broad and covers any formal notation, including programming languages, markup languages, hardware description languages, design notations, data descriptions, etc.

Predefined frontends exist for many programming, hardware, and markup languages, including Ada, C, C++, C#, Cobol, Fortran, HTML, IDL, Java, Mathematica, Matlab, Motorola 68k assembly, Pascal, PHP, Verilog, VHDL, Visual Basic, and XML; it is apparently also possible to define new frontends.

EDG C++, Java, and Fortran front-ends

Friday, April 9th, 2004

The Edison Design Group makes a standards-compliant C++ front end, as well as Java and Fortran front-ends. While their primary market is compiler and program transformation tool vendors, apparently they are willing to license these to university researchers on a case-by-case basis. (per their FAQ.)

SUIF

Friday, April 9th, 2004

The venerable SUIF system is “a free infrastructure designed to support collaborative research in optimizing and parallelizing compilers.” It is fairly straightforward to write your own passes on the SUIF IR in C++. Frontends exist for C, C++, Fortran, and Java, and SUIF can interoperate with Zephyr; there are MIPS and C backends.

The GNU Compiler Collection

Thursday, April 1st, 2004

Manoj Plakal points out that I have not mentioned GCC. GCC, of course, has frontends for many languages, including C, C++, Objective-C, Java, Fortran, Pascal, and Ada; and backends for nearly every computer architecture ever created as well as a great many that weren’t. It has a reputation for being difficult to use for research, but that hasn’t stopped many people from doing so.

Feel free to TrackBack this entry if you’re using GCC for programming languages research, or if you have tips for using GCC for programming languages research.

Scale

Wednesday, March 31st, 2004

Scale is a compiler from the ALI group at Massachusetts. Scale is a modular compiler that provides frontends for C, Java, and Fortran, and a backend that produces C. Scale supports alias analysis (including implementations of Shapiro-Horwitz, Stensgaard, and a simple algorithm), SSA, and a battery of scalar optimizations (redundancy elimination, value numbering, etc.). Scale uses an IR called Scribble and supports annotating the IR with information for additional passes. It is implemented in Java.

Open64 and derivatives

Wednesday, March 31st, 2004

Open64 (formerly Pro64) is an open-source compiler for C++ and Fortran, targeting IA-64. It uses an intermediate language called WHIRL, and includes “inter-procedural analysis and optimizations, loop-nest optimizations, scalar global optimizations, and code generation.” The mailing list for Open64 developers seems to get between 10-30 messages a month.

The CAPSL group at Delaware has developed a compiler based on Open64 called Kylin, which targets Intel’s XScale architecture. Unfortunately, as of this writing, the source code for Kylin is not available.

Intel and the Chinese Academy of Sciences have collaborated to produce the Open Research Compiler (ORC). ORC is a derivative of Open64; it includes more advanced IA-64 optimizations and has been refactored in order to “facilitate future research.” It includes SSA, region-based compilation, and edge, value, and memory profiling.