Skip to content

Commit c03e566

Browse files
[Flang] Add a Fortran Standards Support doc
1 parent 67a0113 commit c03e566

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

flang/docs/FortranStandardsSupport.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<!--===- docs/FortranStandardsSupport.md
2+
3+
Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
See https://llvm.org/LICENSE.txt for license information.
5+
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
7+
-->
8+
9+
# Flang's Fortran standards support
10+
11+
```{contents}
12+
---
13+
local:
14+
---
15+
```
16+
17+
This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
18+
TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information.
19+
Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
20+
21+
The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
22+
the letters **P**, **Y**, **N** for the various implementation status.
23+
- **P** : When the implementation is incomplete for a few cases
24+
- **Y** : When the implementation is complete
25+
- **N** : When the implementation is absent
26+
27+
Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
28+
Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
29+
30+
## Fortran 77
31+
All features are supported.
32+
33+
## Fortran 90
34+
All features are supported.
35+
36+
## Fortran 95
37+
All features are supported.
38+
39+
## Fortran 2003
40+
All features except those listed in the following table are supported.
41+
42+
| Feature | Status | Comments |
43+
|------------------------------------------------------------|--------|---------------------------------------------------------|
44+
| Parameterized Derived Types | P | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
45+
| Assignment to allocatable | P | Assignment to whole allocatable in FORALL is not implemented |
46+
| Pointer Assignment | P | Polymorphic assignment in FORALL is not implemented |
47+
| The VOLATILE attribute | P | Volatile in procedure interfaces is not implemented |
48+
| Asynchronous input/output | P | IO will happen synchronously |
49+
50+
## Fortran 2008
51+
All features except those listed in the following table are supported.
52+
53+
| Feature | Status | Comments |
54+
|------------------------------------------------------------|--------|---------------------------------------------------------|
55+
| Coarrays | N | Lowering and runtime support is not implemented |
56+
| do concurrent | P | Sequential execution works. Parallel support in progress|
57+
| Internal procedure as an actual argument or pointer target | Y | Current implementation requires stack to be executable. See [Proposal](InternalProcedureTrampolines.md) |
58+
59+
## Fortran 2018
60+
TBD
61+
62+
## Fortran 2023
63+
TBD

0 commit comments

Comments
 (0)