FC: LLVM based Fortran Frontend

A new front end for Fortran (
[https://github.com/compiler-tree-technologies/fc](https://github.com/compiler-tree-technologies/fc) ) has been written in the
design spirit of LLVM/Clang. This is a prototype version with approximately
20K+ lines of code. The compiler is close to Fortran 95 standard. The Front
end is a complete end to end solution without semantic analysis. It
compiles and runs 400+ unit test cases and 2 (503.bwaves_r and
548.exchange2_r) SPEC CPU 2017 Fortran benchmarks.

Major supported features inlcudes:
1. Nested do, do-while, where, select-case, forall, implied-do constructs,
2. Handling/Expanding Array Section expressions, Array constructors,
3. IO Handling: File read/write with basic Formatting support.
4. Support for around 40 Fortran Intrinsics like transpose, reshape, min,
max, sum, etc
5. Nested Functions/ Module/ Subroutines.
6. Derived types are partially supported(WIP)
7. Dynamic memory handling (allocate statement) using malloc/free.
8. Very basic Debugging / TBAA support.

LLVM code generated is fairly optimized. The performance in SPEC becnhmarks
are comparable(better in few cases) to flang and gfortran compilers in both
speed and rate runs.

Feedback/ comments are welcome.

Prashantha N.R.
Compiler Tree Technologies

Why not contribute to Flang or F18 instead? What are the technical and nontechnical advantages of your project over those?

I’m happy to see LLVM used all over the place, but I want the community focused on building one very good OSS Fortran front-end for LLVM, rather than five decent ones.


Also in case you´re not interested in working with the flang folks can you explain the vision for FC and how it´s different than flang ?

We are also interested in seeing one very good Fortran front end for LLVM. The existence of f18 tells us that flang is not a choice on a longer run. When we first encountered F18, we are overawed.

Open source allows freedom to attempt and learn by attempts. We are a predominantly back end engineers and FC allowed us to learn the issues involved in writing a front end. As version 0.1 of FC is out we are contemplating what is the next step. We will come out with a plan soon.


We have not stated that we are not interested in working with knowledgable flang folks. We have just released FC version 0.1 and contemplating what should be next. We will get back to the community in a near future.