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 GettingInvolved 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
- Aliasing rules
- 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
- Compiler directives supported by Flang
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
- array_merge_store
- FIR Language Reference
- Flang command line argument reference
- Flang drivers
- CMake Support
- Testing
- Frontend Driver Plugins
- LLVM Pass Plugins
- A Fortran feature history cheat sheet
- Design: Fortran IR
- Fortran Tests in the LLVM Test Suite
- Variable and Expression value concepts in HLFIR
- Alternatives that were not retained
- 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
- OpenMP 4.5 Grammar
- OpenMP Semantic Analysis
- Compiler options comparison
- Overview of Compiler Phases
- Analysis
- Lowering
- Object code generation and linking
- Parameterized Derived Types (PDTs)
- Fortran standard
- Testing
- Current TODOs
- Parser Combinators
- The F18 Parser
- Polymorphic Entities
- Testing
- Current TODOs
- Fortran Preprocessing
- Procedure Pointer
- Testing
- Current TODOs
- Runtime Descriptors
- The derived type runtime information table
- Semantic Analysis
- Fortran 2018 Grammar
- -fstack-arrays