Welcome to Flang’s documentation¶
Flang is LLVM’s Fortran frontend that can be found here. It is often referred to as “LLVM Flang” to differentiate itself from “Classic Flang” - these are two separate and independent Fortran compilers. LLVM Flang is under active development. While it is capable of generating executables for a number of examples, some functionality is still missing. See Getting Involved for tips on how to get in touch with us and to learn more about the current status.
Contributing to Flang¶
Design Documents¶
- Aliasing in Fortran
- Aliasing analysis in FIR
- Array Composition
- Assumed-Rank Objects
- Bijective Internal Name Uniquing
- Representation of Fortran function calls
- Implementation of
CHARACTER
types in f18 - Complex Operations
- Control Flow Graph
- Debug Generation
- Testing
- Resources
- Compiler directives supported by Flang
- Directive Details
DO CONCURRENT
isn’t necessarily concurrent- Fortran Extensions supported by Flang
- A first take on Fortran 202X features for LLVM Flang
- Design: FIR Array operations
- FIR Language Reference
- Flang command line argument reference
- Flang drivers
- A Fortran feature history cheat sheet
- Design: Fortran IR
- Fortran Tests in the LLVM Test Suite
- High-Level Fortran IR (HLFIR)
- Fortran I/O Runtime Library Internal Design
- Trampolines for pointers to internal procedures.
- A categorization of standard (2018) and extended Fortran intrinsic procedures
- Implementation of
Intrinsic
types in f18 - Semantics: Resolving Labels and Construct Names
- Module Files
- OpenACC in Flang
- OpenACC dialect: Fortran descriptor management in the offload data environment
- OpenMP 4.5 Grammar
- Introduction to Declare Target
- Declare Target as represented in the OpenMP Dialect
- Declare Target Fortran OpenMP Lowering
- Declare Target Transformation Passes for Flang
- Declare Target OpenMP Dialect To LLVM-IR Lowering
- Current Support
- OpenMP dialect: Fortran descriptor type mapping for offload
- OpenMP dialect differences from OpenACC dialect
- OpenMP Semantic Analysis
- Compiler options comparison
- Overview of Compiler Phases
- Parameterized Derived Types (PDTs)
- Parser Combinators
- The F18 Parser
- Polymorphic Entities
- Fortran Preprocessing
- Procedure Pointer
- Runtime Descriptors
- Environment variables of significance to Fortran execution
- The derived type runtime information table
- Semantic Analysis
- Fortran 2018 Grammar
- Stack arrays pass
- Flang support for REAL(16) math intrinsics