mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 08:06:08 +00:00

This is a document describing why and how to add support for repacking of assumed-shape dummy arrrays to provide more efficient data cache. It proposes adding new FIR operations and outlines the compiler flow handling these operations. I would like to hear feedback on all of it, but especially on: * The possibility of detecting safeness of the repacking in the context of OpenACC/OpenMP. If it is not possible to do the runtime checks to determine safety, then there is not need to add the `TempCopyIsSafe` attributes to the instruction. * Whether it is possible to preserve the debug information in cases where `fir.pack_array` is sunk after `[hl]fir.declare`, so that before the `fir.pack_array` a debugger will refer to the values in the original array, and after `fir.pack_array` it will refer to the copy.
100 lines
2.0 KiB
Markdown
100 lines
2.0 KiB
Markdown
# Welcome to Flang's documentation
|
|
|
|
Flang is LLVM's Fortran frontend that can be found
|
|
[here](https://github.com/llvm/llvm-project/tree/main/flang). It is often
|
|
referred to as "LLVM Flang" to differentiate itself from ["Classic
|
|
Flang"](https://github.com/flang-compiler/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](GettingInvolved) for tips
|
|
on how to get in touch with us and to learn more about the current status.
|
|
|
|
```{eval-rst}
|
|
.. toctree::
|
|
:titlesonly:
|
|
|
|
ReleaseNotes
|
|
```
|
|
|
|
# Contributing to Flang
|
|
|
|
```{eval-rst}
|
|
.. toctree::
|
|
:titlesonly:
|
|
|
|
C++17
|
|
C++style
|
|
DesignGuideline
|
|
FortranForCProgrammers
|
|
GettingInvolved
|
|
GettingStarted
|
|
ImplementingASemanticCheck
|
|
PullRequestChecklist
|
|
```
|
|
|
|
# Design Documents
|
|
|
|
```{eval-rst}
|
|
.. toctree::
|
|
:titlesonly:
|
|
|
|
Aliasing
|
|
AliasingAnalysisFIR
|
|
ArrayComposition
|
|
ArrayRepacking
|
|
AssumedRank
|
|
BijectiveInternalNameUniquing
|
|
Calls
|
|
Character
|
|
ComplexOperations
|
|
ControlFlowGraph
|
|
DebugGeneration
|
|
Directives
|
|
DoConcurrent
|
|
Extensions
|
|
F202X
|
|
FIRArrayOperations
|
|
FIRLangRef
|
|
FlangCommandLineReference
|
|
FlangDriver
|
|
FortranFeatureHistory
|
|
FortranIR
|
|
FortranLLVMTestSuite
|
|
HighLevelFIR
|
|
IORuntimeInternals
|
|
InternalProcedureTrampolines
|
|
Intrinsics
|
|
IntrinsicTypes
|
|
LabelResolution
|
|
ModFiles
|
|
OpenACC
|
|
OpenACC-descriptor-management.md
|
|
OpenMP-4.5-grammar.md
|
|
OpenMP-declare-target
|
|
OpenMP-descriptor-management
|
|
OpenMP-semantics
|
|
OptionComparison
|
|
Overview
|
|
ParameterizedDerivedTypes
|
|
ParserCombinators
|
|
Parsing
|
|
PolymorphicEntities
|
|
Preprocessing
|
|
ProcedurePointer
|
|
RuntimeDescriptor
|
|
RuntimeEnvironment
|
|
RuntimeTypeInfo
|
|
Semantics
|
|
f2018-grammar.md
|
|
fstack-arrays
|
|
Real16MathSupport
|
|
Unsigned
|
|
```
|
|
|
|
# Indices and tables
|
|
|
|
```{eval-rst}
|
|
* :ref:`genindex`
|
|
* :ref:`search`
|
|
```
|