llvm / llvm/llvm-project

[flang] Complete Fortran 2023 SIMPLE procedure support

Open
#221,457 15 comments 0 reactions 1 assignee Claimed by @mlir-maiden View on GitHub
flang
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Fortran 2023 introduces SIMPLE procedures, which are PURE procedures with additional restrictions.

Flang already parses the SIMPLE prefix and carries SIMPLE as a procedure attribute. This issue tracks the remaining work needed to complete SIMPLE procedure support.

The remaining work includes:
- Classify intrinsic functions as SIMPLE as required by Fortran 2023
- Classify intrinsic module functions and the specified intrinsic module subroutines as SIMPLE
- Handle the conditional SIMPLE classification of `MOVE_ALLOC` when `FROM` is not a coarray
- Classify the elemental `==` and `/=` operators for `ieee_class_type` and `ieee_round_type` as SIMPLE
- Implement the remaining semantic constraints for SIMPLE procedures (use/host association restrictions, SIMPLE dummy and internal procedures, restrictions on referenced procedures, and explicit-interface requirements)

#205024 classifies `MVBITS`, `SPLIT`, and `TOKENIZE` as SIMPLE.

As the implementation progresses, any additional work needed to complete SIMPLE support will be tracked here.

@cenewcombe could you please assign this issue to me? I don't have permissions to self-assign. Thanks!
@eugeneepshteyn tagging you for visibility.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.