Skip to content

For Contributors

Damian Rouson edited this page Mar 11, 2023 · 1 revision

About

This page provides a list of helpful links to reference during the development process.

Helpful References

LLVM-Project Project List: Flang features to be implemented

Caffeine post on LLVM Discourse

Guidelines for creating design documents

After the above guidelines for creating design documents were established, here are some examples of design documents or design document review processes:

Example of review process for a design document

Example of a simple design doc and the review process for the code that implements this design.

Draft for Coarray Fortran Runtime Design Doc

MLIR Tutorials:

MLIR Documentation: Creating a Dialect

MLIR Tutorial: Building a Compiler with MLIR

Videos

How to lower a Fortran intrinsic in LLVM/Flang

2019 EuroLLVM Developers’ Meeting: T. Shpeisman & C. Lattner “MLIR: Multi-Level Intermediate Representation Compiler Infrastructure”

2019 LLVM Developers’ Meeting: E. Schweitz “An MLIR Dialect for High-Level Optimization of Fortran”

2020 LLVM Developers’ Meeting: M. Amini & R. Riddle “MLIR Tutorial”

2020 LLVM Developers’ Meeting: “Common MLIR Dialect for C/C++ and Fortran”

SC20 - LLVM in HPC Workshop: Keynote: MLIR: an Agile Infrastructure for Building a Compiler Ecosystem

2021 LLVM Developers’ Meeting: “Introduction to the Flang Frontend”

2022 LLVM Performance Workshop at CGO - A walk through Flang OpenMP lowering: From FIR to LLVMIR

2022 LLVM Performance Workshop at CGO - Compiling, running and benchmarking SNAP with LLVM Flang - experiences with a new compiler

2022 LLVM Performance Workshop at CGO - A walk through Flang OpenMP lowering: From FIR to LLVMIR

2022 EuroLLVM Developers’ Meeting: “How to write a new compiler driver? The LLVM Flang perspective.”

Flang Status and Test Documents

List of sections of Fortran standard that discuss relevant topics

11.6.1 (Fortran 2018) Image control statements (Fortran 2023 11.7.1)

18.3.5 (Fortran 2018)

1 A Fortran variable that is a named array is interoperable if and only if its type and type parameters are interoperable, it is not a coarray, it is of explicit shape or assumed size, and if it is of type character its length is not assumed or declared by an expression that is not a constant expression.

7.5.6.3 (Fortran 2018) When finalization occurs

C.11.1.1 (Fortran 2018) Relaxed memory model