Repository: llvm/llvm-project
Pull request #132195: [Flang] Add a Fortran Standards Support doc
Author: login: kiranchandramohan
Labels: name: flang
description: Flang issues not falling into any other category
Created: 2025-03-20T12:08:50Z | Merged: 2025-04-24T07:00:20Z



Diff:
diff --git a/flang/docs/FortranStandardsSupport.md b/flang/docs/FortranStandardsSupport.md
new file mode 100644
index 0000000000000..78f5aa4f5dd8d
--- /dev/null
+++ b/flang/docs/FortranStandardsSupport.md
@@ -0,0 +1,118 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory.
+The Status column uses the letters **Y**, **P**, **N** for the implementation status:
+- **Y** : Yes. When the implementation is complete
+- **P** : Partial. When the implementation is incomplete for a few cases
+- **N** : No. When the implementation is absent
+
+There is no distinction made between support in the Parser/Semantics and the MLIR or Lowering stages.
+
+Note: The two major missing features in Flang at present are coarrays and parameterized derived types (PDTs) with length type parameters.
+
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features. The table entries are based on the document [The new features in Fortran 2023](https://wg5-fortran.org/N2201-N2250/N2212.pdf).
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | P      | Syntax is accepted |
+| Enumerations                                               | N      | |
+
+## Fortran 2018
+All features except those listed in the following table are supported. Almost all of the unsupported features are related to
+the multi-image execution. The table entries are based on the document [The new features in Fortran 2018](https://wg5-fortran.org/N2151-N2200/ISO-IECJTC1-SC22-WG5_N2161_The_New_Features_of_Fortran_2018.pdf).
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Asynchronous communication                                 | P      | Syntax is accepted |
+| Teams                                                      | N      | Multi-image/Coarray feature |
+| Image failure                                              | P      | Multi-image/Coarray feature. stat_failed_image is added |
+| Form team statement                                        | N      | Multi-image/Coarray feature |
+| Change team construct                                      | N      | Multi-image/Coarray feature |
+| Coarrays allocated in teams                                | N      | Multi-image/Coarray feature |
+| Critical construct                                         | N      | Multi-image/Coarray feature |
+| Lock and unlock statements                                 | N      | Multi-image/Coarray feature |
+| Events                                                     | N      | Multi-image/Coarray feature |
+| Sync team construct                                        | N      | Multi-image/Coarray feature |
+| Image selectors                                            | N      | Multi-image/Coarray feature |
+| Intrinsic functions get_team 	and team_number              | N      | Multi-image/Coarray feature |
+| Intrinsic function image_index                             | N      | Multi-image/Coarray feature |
+| Intrinsic function num_images                              | N      | Multi-image/Coarray feature |
+| Intrinsic function this_image                              | N      | Multi-image/Coarray feature |
+| Intrinsic move_alloc extensions                            | P      | Multi-image/Coarray feature |
+| Detecting failed and stopped images                        | N      | Multi-image/Coarray feature |
+| Collective subroutines                                     | N      | Multi-image/Coarray feature |
+| New and enhanced atomic subroutines                        | N      | Multi-image/Coarray feature |
+| Failed images and stat= specifiers                         | N      | Multi-image/Coarray feature |
+| Intrinsic function coshape                                 | N      | Multi-image/Coarray feature |
+
+## Fortran 2008
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Coarrays                                                   | N      | Lowering and runtime support is not implemented         |
+| do concurrent                                              | P      | Sequential execution works. Parallel support in progress|
+| Internal procedure as an actual argument or pointer target | Y      | Current implementation requires stack to be executable. See [Proposal](InternalProcedureTrampolines.md) |
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type parameters is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
+| Assignment to allocatable                                  | P      | Assignment to whole allocatable in FORALL is not implemented       |
+| The VOLATILE attribute                                     | P      | VOLATILE in procedure interfaces is not implemented     |
+| Asynchronous input/output                                  | P      | IO will happen synchronously                            |
+| MIN/MAX extensions for CHARACTER                           | P      | Some variants are not supported                         |
+
+## Fortran 95
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## FORTRAN 77
+All features are supported.
diff --git a/flang/docs/index.md b/flang/docs/index.md
index 1de0ee2e6f0d6..0c92ea9cf7633 100644
--- a/flang/docs/index.md
+++ b/flang/docs/index.md
@@ -26,6 +26,7 @@ on how to get in touch with us and to learn more about the current status.
    C++style
    DesignGuideline
    FortranForCProgrammers
+   FortranStandardsSupport
    GettingInvolved
    GettingStarted
    ImplementingASemanticCheck


Reviews:
user: login: mjklemm
body: LGTM, with the few nits that I have commented on.

I guess we should see if we can get a list of updates from J3/WG5 for 2018 and 2023 Fortran to populate the list.  We also should list intrinsic functions explicitly if there are supported (or not).
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T14:37:25Z
user: login: tarunprabhu
body: Thanks Kiran. Just a few nits and comments.
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T15:06:34Z
user: login: kkwli
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-20T15:13:17Z
user: login: DanielCChen
body: LGTM. A couple of nits added inline.
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T15:43:43Z
user: login: tblah
body: Thanks for putting this together Kiran
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-21T10:51:04Z
user: login: kiranchandramohan
body: Addressed review comments.
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-21T12:51:54Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-21T12:54:28Z
user: login: tarunprabhu
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-21T16:14:03Z
user: login: kkwli
body: Thanks.
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-23T23:23:22Z
user: login: rouson
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T12:04:49Z
user: login: rouson
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T12:14:55Z
user: login: rouson
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T13:22:11Z
user: login: ergawy
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-24T13:31:14Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T15:58:58Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T17:28:59Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T17:30:50Z
user: login: rouson
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T22:46:41Z
user: login: rouson
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T22:59:24Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T23:53:27Z
user: login: mleair
body: LGTM. Looks like you used the following document for the Fortran 2023 features:

https://wg5-fortran.org/N2201-N2250/N2212.pdf

You may also want to pull in the features from the Fortran 2008/2018 Compiler 
Conformance charts that Ian Chivers and Jane Sleightholme were compiling. You can find them at https://www.fortranplus.co.uk/fortran-information/



state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T18:11:10Z
user: login: h-vetinari
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-20T22:39:46Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T08:00:55Z
user: login: kiranchandramohan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T21:07:35Z

Review comments:
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
path: flang/docs/FortranStandardsSupport.md
user: login: mjklemm
body: ```suggestion
the letters **P**, **Y**, **N** for the implementation status:
```
created_at: 2025-03-20T14:32:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
path: flang/docs/FortranStandardsSupport.md
user: login: mjklemm
body: ```suggestion
# Flang Fortran Standards Support
```
created_at: 2025-03-20T14:33:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
path: flang/docs/FortranStandardsSupport.md
user: login: kkwli
body: If we take the suggested change above, should we also remove `'s` here? Or just rephrase it to:
> This document summarizes Fortran standards support in Flang.
created_at: 2025-03-20T15:00:23Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
path: flang/docs/FortranStandardsSupport.md
user: login: tarunprabhu
body: ```suggestion
This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The 
TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative. 
```
created_at: 2025-03-20T15:00:40Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
path: flang/docs/FortranStandardsSupport.md
user: login: tarunprabhu
body: ```suggestion
Standards support is provided upto Fortran 2008 for now. It will be extended later for Fortran 2018 and Fortran 2023.
```
created_at: 2025-03-20T15:01:18Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
path: flang/docs/FortranStandardsSupport.md
user: login: kkwli
body: FORTRAN 77 - consistent with what we use in FortranFeatureHistory.md
created_at: 2025-03-20T15:04:37Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
path: flang/docs/FortranStandardsSupport.md
user: login: tarunprabhu
body: Do we have a list of the intrinsics where support for `CHARACTER` types is incomplete? If it is not too difficult to identify these, a complete list may be better than alluding to "a few intrinsics".
created_at: 2025-03-20T15:05:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
path: flang/docs/FortranStandardsSupport.md
user: login: kkwli
body: Since all the contents in the first three sections are the same, I suggest to consolidate to the `FORTRAN77, Fortran 90 and Fortran 95` section. In addition, if we take Michael's suggestion to populate the `Fortran 2018` and `Fortran 2023` sections, I suggest to re-order the sections to start with `Fortran 2023` first. I think people are more interested in which newer features that flang support nowadays.
created_at: 2025-03-20T15:13:00Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## Fortran 95
+All features are supported.
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
path: flang/docs/FortranStandardsSupport.md
user: login: DanielCChen
body: length type => length type parameters
created_at: 2025-03-20T15:39:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## Fortran 95
+All features are supported.
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
+| Assignment to allocatable                                  | P      | Assignment to whole allocatable in FORALL is not implemented       |
+| Pointer Assignment                                         | P      | Polymorphic assignment in FORALL is not implemented     |
+| The VOLATILE attribute                                     | P      | Volatile in procedure interfaces is not implemented     |
path: flang/docs/FortranStandardsSupport.md
user: login: DanielCChen
body: Volatile => VOLATILE 
as it refers to the attribute.
created_at: 2025-03-20T15:41:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## Fortran 95
+All features are supported.
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
+| Assignment to allocatable                                  | P      | Assignment to whole allocatable in FORALL is not implemented       |
+| Pointer Assignment                                         | P      | Polymorphic assignment in FORALL is not implemented     |
path: flang/docs/FortranStandardsSupport.md
user: login: tblah
body: I think this was implemented recently:

- https://github.com/llvm/llvm-project/pull/130114
- https://github.com/llvm/llvm-project/pull/129522
- https://github.com/llvm/llvm-project/pull/130772
created_at: 2025-03-21T10:50:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:48:45Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:49:04Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:49:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:49:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:49:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: I do not have a list of intrinsics here. The only ones I am actually aware or the MIN/MAX intrinsic. Since I was not 100% I am making a conservative statement here. Do we want to just say MIN/MAX only? Do you have additional info in the gfortran testsuite?
created_at: 2025-03-21T12:50:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:51:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## Fortran 95
+All features are supported.
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:51:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## Fortran 95
+All features are supported.
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
+| Assignment to allocatable                                  | P      | Assignment to whole allocatable in FORALL is not implemented       |
+| Pointer Assignment                                         | P      | Polymorphic assignment in FORALL is not implemented     |
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Thanks Tom. I have updated.
created_at: 2025-03-21T12:51:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
+## Fortran 77
+All features are supported.
+
+## Fortran 90
+All features are supported.
+
+## Fortran 95
+All features are supported.
+
+## Fortran 2003
+All features except those listed in the following table are supported.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Parameterized Derived Types                                | P      | PDT with length type is not supported. See [Proposal](ParameterizedDerivedTypes.md) |
+| Assignment to allocatable                                  | P      | Assignment to whole allocatable in FORALL is not implemented       |
+| Pointer Assignment                                         | P      | Polymorphic assignment in FORALL is not implemented     |
+| The VOLATILE attribute                                     | P      | Volatile in procedure interfaces is not implemented     |
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done
created_at: 2025-03-21T12:51:39Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
+
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: I have reorganized in descending order of standards. I do not have entries for 2018 and 2023 now. If it is OK, we can add that in subsequent PRs.
I have not consolidated FORTRAN77, Fortran 90 and Fortran 95. I can do so before submitting if there are no reports of unsupported features in this review.
created_at: 2025-03-21T12:54:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the various implementation status.
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note 1 : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+Note 2 : Besides the features listed below a few intrinsics like MIN/MAX are not supported for a few cases with CHARACTER type.
path: flang/docs/FortranStandardsSupport.md
user: login: tarunprabhu
body: I can check to see if there are any failures as a result of this. I don't know off the top of my head.
created_at: 2025-03-21T16:14:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
+| Enumerations                                               | N      | |
+
+## Fortran 2018
+All features except those listed in the following table are supported. Almost all of the unsupported features are related to
+coarrays.
path: flang/docs/FortranStandardsSupport.md
user: login: rouson
body: ```suggestion
multi-image execution.
```
Many multi-image parallel features have do not necessarily involve coarrays (e.g., collective subroutines and teams).
created_at: 2025-03-24T12:04:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
path: flang/docs/FortranStandardsSupport.md
user: login: rouson
body: "upto" should be "up to"
created_at: 2025-03-24T12:14:55Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
+| Enumerations                                               | N      | |
+
+## Fortran 2018
+All features except those listed in the following table are supported. Almost all of the unsupported features are related to
+coarrays.
path: flang/docs/FortranStandardsSupport.md
user: login: rouson
body: Similarly to how the parallel support for `do concurrent` is described below as in progress, please state the support for multi-image features is in progress.
created_at: 2025-03-24T12:21:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
path: flang/docs/FortranStandardsSupport.md
user: login: rouson
body: I think this is still in progress. @ergawy can confirm.  Should the status be `N` or `P`?
created_at: 2025-03-24T13:21:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
path: flang/docs/FortranStandardsSupport.md
user: login: ergawy
body: This is supported for the pure Fortran case, for the `do concurrent` -> OpenMP case (or `do concurrent` parallelization in general), this is not supported yet. So I think @kiranchandramohan is indeed correct here.
created_at: 2025-03-24T13:31:14Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: As @ergawy mentions, this is supported for the sequential Fortran case.
But I understand @rouson 's point that this might cause a user to think that reduction works in a parallel sense. So I am changing it to P (partial).
created_at: 2025-03-24T15:58:58Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,63 @@
+<!--===- docs/FortranStandardsSupport.md 
+  
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+  
+-->
+
+# Flang's Fortran standards support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Flang's Fortran standards support. The information is only provided as a guideline. The compiler emits
+TODOs/Not Yet Implemented messages for unimplemented features and that should be treated as the authoratative information. 
+Standards support is provided upto Fortran 2008 for now. It will be later extended for Fortran 2018 and Fortran 2023.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: I have removed this sentence.
created_at: 2025-03-24T17:28:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
+| Enumerations                                               | N      | |
+
+## Fortran 2018
+All features except those listed in the following table are supported. Almost all of the unsupported features are related to
+coarrays.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: I now have the following sentence:
```
 Almost all of the unsupported features are related to the additional parallel features (coarrays/teams/collectives).
 ```
 The support status of collectives and teams are individually called out in the status table for Fortran 2018.
created_at: 2025-03-24T17:30:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
+| Enumerations                                               | N      | |
+
+## Fortran 2018
+All features except those listed in the following table are supported. Almost all of the unsupported features are related to
+coarrays.
path: flang/docs/FortranStandardsSupport.md
user: login: rouson
body: @kiranchandramohan thanks for making the edits.  "Parallel features" could be interpreted to include parallelization of `do concurrent` so I'd still suggest "multi-image" to replace "parallel."
created_at: 2025-03-24T22:46:41Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
path: flang/docs/FortranStandardsSupport.md
user: login: rouson
body: @kiranchandramohan actually I hadn't thought about the difference between serial support and parallel support.  My point was that I didn't even realize that serial support for `reduce` existed yet on the main branch of llvm-project.  I'm building `flang` now and will try it out.  If serial support works, then I think either "Y" or "P" is fine and I leave it up to you to decide.
created_at: 2025-03-24T22:59:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,115 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+Note : No distinction is made between the support in the Parser/Semantics and MLIR or Lowering support.
+
+## Fortran 2023
+See [document](F202X.md) for a brief discussion about the new features in Fortran 2023. The following table summarizes the
+status of all important Fortran 2023 features.
+
+| Feature                                                    | Status | Comments                                                |
+|------------------------------------------------------------|--------|---------------------------------------------------------|
+| Allow longer statement lines and overall statement length  | Y      | |
+| Automatic allocation of lengths of character variables     | N      | |
+| The specifiers typeof and classof                          | N      | |
+| Conditional expressions and arguments                      | N      | |
+| More use of boz constants                                  | P      | All usages other than enum are supported |
+| Intrinsics for extracting tokens from a string             | N      | |
+| Intrinsics for Trig functions that work in degrees         | N      | |
+| Intrinsics for Trig functions that work in half revolutions| N      | |
+| Changes to system_clock                                    | N      | |
+| Changes for conformance with the new IEEE standard         | Y      | |
+| Additional named constants to specify kinds                | Y      | |
+| Extensions for c_f_pointer intrinsic                       | N      | |
+| Procedures for converting between fortran and c strings    | N      | |
+| The at edit descriptor                                     | N      | |
+| Control over leading zeros in output of real values        | N      | |
+| Extensions for Namelist                                    | N      | |
+| Allow an object of a type with a coarray ultimate component to be an array or allocatable | N | |
+| Put with Notify                                            | N      | |
+| Error conditions in collectives                            | N      | |
+| Simple procedures                                          | N      | |
+| Using integer arrays to specify subscripts                 | N      | |
+| Using integer arrays to specify rank and bound of an array | N      | |
+| Using an integer constant to specify rank                  | N      | |
+| Reduction specifier for do concurrent                      | Y      | |
+| Enumerations                                               | N      | |
+
+## Fortran 2018
+All features except those listed in the following table are supported. Almost all of the unsupported features are related to
+coarrays.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done. Made the suggested change.
created_at: 2025-03-24T23:53:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,119 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. No distinction is
+made between the support in the Parser/Semantics and MLIR or Lowering support. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+There is no distinction made between support in the Parser/Semantics and the MLIR or Lowering stages.
path: flang/docs/FortranStandardsSupport.md
user: login: h-vetinari
body: This sentence is now repeated (just above the P/Y/N there's an equivalent one).
created_at: 2025-04-20T22:36:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,119 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. No distinction is
+made between the support in the Parser/Semantics and MLIR or Lowering support. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
path: flang/docs/FortranStandardsSupport.md
user: login: h-vetinari
body: I still think we should make this easier for readers (explain the letters, order them by degree of completion)
```suggestion
the letters **Y**, **P**, **N** for the implementation status:
- **Y** (Yes): When the implementation is complete
- **P** (Partial): When the implementation is incomplete
- **N** (No): When the implementation is absent
```
created_at: 2025-04-20T22:38:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,119 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. No distinction is
+made between the support in the Parser/Semantics and MLIR or Lowering support. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
+
+There is no distinction made between support in the Parser/Semantics and the MLIR or Lowering stages.
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Thanks. Removed the former occurence.
created_at: 2025-04-21T08:00:55Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,119 @@
+<!--===- docs/FortranStandardsSupport.md
+
+   Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+   See https://llvm.org/LICENSE.txt for license information.
+   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+-->
+
+# Flang Fortran Standards Support
+
+```{contents}
+---
+local:
+---
+```
+
+This document summarizes Fortran standards support in Flang. The information is only provided as a guideline. The
+TODOs/Not Yet Implemented messages emitted by the compiler for unimplemented features should be treated as authoritative.
+
+The standards support information is provided as a table with three columns that are self explanatory. No distinction is
+made between the support in the Parser/Semantics and MLIR or Lowering support. The Status column uses
+the letters **P**, **Y**, **N** for the implementation status:
+- **P** : When the implementation is incomplete for a few cases
+- **Y** : When the implementation is complete
+- **N** : When the implementation is absent
path: flang/docs/FortranStandardsSupport.md
user: login: kiranchandramohan
body: Done. The following format was used.

```
- **Y** : Yes. When the implementation is complete
```
created_at: 2025-04-22T21:07:35Z
author_association: CONTRIBUTOR

PR comments:
user: login: ceseo
created_at: 2025-03-20T19:16:56Z
body: This looks very good! Do you plan to do the same for Flang+OpenMP as well?
author_association: CONTRIBUTOR
user: login: kiranchandramohan
created_at: 2025-03-21T12:56:27Z
body: 
> I guess we should see if we can get a list of updates from J3/WG5 for 2018 and 2023 Fortran to populate the list. 

I am leaving this for a future patch. 2023 should be fairly straightforward. I do not have the data for Fortran 2018.

> We also should list intrinsic functions explicitly if there are supported (or not).

Agree, ATM I do not have this data.

> This looks very good! Do you plan to do the same for Flang+OpenMP as well?

Yes.


author_association: CONTRIBUTOR
user: login: klausler
created_at: 2025-03-21T16:02:07Z
body: > > I guess we should see if we can get a list of updates from J3/WG5 for 2018 and 2023 Fortran to populate the list.
> 
> I am leaving this for a future patch. 2023 should be fairly straightforward. I do not have the data for Fortran 2018.

f18 has all of F'2018 except `coshape` intrinsic lowering.

F'2023 support is completely absent and nobody is working on it.
author_association: CONTRIBUTOR
user: login: kiranchandramohan
created_at: 2025-03-21T17:11:08Z
body: Thanks @klausler for the info. I will add sections for Fortran 2018 and 2023.

> > > I guess we should see if we can get a list of updates from J3/WG5 for 2018 and 2023 Fortran to populate the list.
> > 
> > 
> > I am leaving this for a future patch. 2023 should be fairly straightforward. I do not have the data for Fortran 2018.
> 
> f18 has all of F'2018 except `coshape` intrinsic lowering.

Is there a specific reason you called out the `coshape` intrinsic? I see the other coarray extensions in Fortran 2018 hitting TODOs in lowering.

> 
> F'2023 support is completely absent and nobody is working on it.

A few of them seem to have support
-> Allow much longer statement lines and overall statement length
-> selected_logical_kind
-> do-concurrent reduction 
author_association: CONTRIBUTOR
user: login: klausler
created_at: 2025-03-21T17:27:43Z
body: > Thanks @klausler for the info. I will add sections for Fortran 2018 and 2023.
> 
> > > > I guess we should see if we can get a list of updates from J3/WG5 for 2018 and 2023 Fortran to populate the list.
> > > 
> > > 
> > > I am leaving this for a future patch. 2023 should be fairly straightforward. I do not have the data for Fortran 2018.
> > 
> > 
> > f18 has all of F'2018 except `coshape` intrinsic lowering.
> 
> Is there a specific reason you called out the `coshape` intrinsic? I see the other coarray extensions in Fortran 2018 hitting TODOs in lowering.

I skimmed my notes of F'2018 additions and `coshape` stood out as the one item that I know isn't fully supported.   If other coarray features from F'2018 are incomplete, please note them as well.  Some were added as part of a TS between F'2008 and F'2018 so that makes them a little harder to find.

> 
> > F'2023 support is completely absent and nobody is working on it.
> 
> A few of them seem to have support -> Allow much longer statement lines and overall statement length -> selected_logical_kind -> do-concurrent reduction

Fair enough.  The lack of limits on continuation lines and statement length have always been present, so I never thought of them as new features.  But F'2023 was a minor revision, and includes some weird features (e.g. `@` subscripts) and a breaking change that don't appear in any compiler or (obviously) application yet, and that probably won't get any attention from me -- although I did add a portability warning for the breaking change.  If you add a section for F'2023, it's going to be largely unpopulated.
author_association: CONTRIBUTOR
user: login: rouson
created_at: 2025-03-24T12:11:05Z
body:  > I guess we should see if we can get a list of updates from J3/WG5 for 2018 and 2023 Fortran to populate the list. We also should list intrinsic functions explicitly if there are supported (or not).

@mjklemm the list of changes is in the Introduction to the [Fortran 2023 Interpretation Document](https://j3-fortran.org/doc/year/24/24-007.pdf).
author_association: CONTRIBUTOR
user: login: kiranchandramohan
created_at: 2025-04-19T10:36:00Z
body: > LGTM. Looks like you used the following document for the Fortran 2023 features:
> 
> https://wg5-fortran.org/N2201-N2250/N2212.pdf
> 
> You may also want to pull in the features from the Fortran 2008/2018 Compiler Conformance charts that Ian Chivers and Jane Sleightholme were compiling. You can find them at https://www.fortranplus.co.uk/fortran-information/

Thanks, Mark. I have added references to the What is new in Fortran 2023 and 2018 Fortran documents. I believe the Compiler Conformance charts are based on these documents.

I plan to submit this PR on Tuesday if there are no objections.
author_association: CONTRIBUTOR
user: login: sscalpone
created_at: 2025-04-19T18:08:20Z
body: Hi Kiran, apologies for late comments.   I hope they are relatively minor additions if you choose to incorporate them.

For the missing 2018 features, in the comment column,  it would help to add "coarrays" or similar to highlight that the major missing feature is coarrays and a lot of gaps.

It might be nice to call out at the top of the doc that the major missing features are coarrays and PDT with length type parameters.  If you agree these are the only major missing features.

Thank you!
author_association: CONTRIBUTOR
user: login: kiranchandramohan
created_at: 2025-04-20T16:46:11Z
body: Thanks Steve for the review.

> For the missing 2018 features, in the comment column, it would help to add "coarrays" or similar to highlight that the major missing feature is coarrays and a lot of gaps.

Added "Multi-image/Coarray feature" in the comment column.

> It might be nice to call out at the top of the doc that the major missing features are coarrays and PDT with length type parameters. If you agree these are the only major missing features.

Added a Note in the first section.
```
Note: The two major missing features in Flang at present are coarrays and parameterized derived types (PDTs) with length type parameters.
```

Changes are in https://github.com/llvm/llvm-project/pull/132195/commits/04fb498eaca2ff00688906ae5264d81704fe84f9
author_association: CONTRIBUTOR