Skip to content

Commit 3eb1775

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

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

flang/docs/FortranStandardsSupport.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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+
|------------------------------------------------------------|--------|---------------------------------------------------------|
43+
| Feature | Status | Comments |
44+
|------------------------------------------------------------|--------|---------------------------------------------------------|
45+
| Parameterized Derived Types | P | PDT with length type is not supported. |
46+
| | | See [Proposal](ParameterizedDerivedTypes.md) |
47+
|------------------------------------------------------------|--------|---------------------------------------------------------|
48+
| Assignment to allocatable | P | Assignment to whole allocatable in FORALL is not |
49+
| | | implemented. |
50+
|------------------------------------------------------------|--------|---------------------------------------------------------|
51+
| Pointer Assignment | P | Polymorphic assignment in FORALL is not implemented |
52+
|------------------------------------------------------------|--------|---------------------------------------------------------|
53+
| The VOLATILE attribute | P | Volatile in procedure interfaces is not implemented |
54+
|------------------------------------------------------------|--------|---------------------------------------------------------|
55+
| Asynchronous input/output | P | IO will happen synchronously |
56+
|------------------------------------------------------------|--------|---------------------------------------------------------|
57+
58+
## Fortran 2008
59+
All features except those listed in the following table are supported.
60+
61+
|------------------------------------------------------------|--------|---------------------------------------------------------|
62+
| Feature | Status | Comments |
63+
|------------------------------------------------------------|--------|---------------------------------------------------------|
64+
| Coarrays | N | Lowering and runtime support is not implemented |
65+
|------------------------------------------------------------|--------|---------------------------------------------------------|
66+
| do concurrent | P | Sequential execution works. Parallel support in progress|
67+
|------------------------------------------------------------|--------|---------------------------------------------------------|
68+
| Internal procedure as an actual argument or pointer target | Y | Current implementation requires stack to be executable. |
69+
| | | See [Proposal](InternalProcedureTrampolines.md) |
70+
|------------------------------------------------------------|--------|---------------------------------------------------------|
71+
72+
## Fortran 2018
73+
TBD
74+
75+
## Fortran 2023
76+
TBD

0 commit comments

Comments
 (0)