From 79c7e7e1dcc3f1d55272ef154933fc3ae06f03ee Mon Sep 17 00:00:00 2001 From: Peter Klausler Date: Fri, 12 Dec 2025 15:21:45 -0800 Subject: [PATCH] [flang][NFC] Document an intentional violation of the ISO standard This compiler (like all others) allows OPTIONAL dummy arguments to appear as arguments to some intrinsic functions that are specified as disallowing them; document this interpretation better. --- flang/docs/Extensions.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/flang/docs/Extensions.md b/flang/docs/Extensions.md index 593cd99147515..6628597923fc4 100644 --- a/flang/docs/Extensions.md +++ b/flang/docs/Extensions.md @@ -189,6 +189,21 @@ end `PROCEDURE(), POINTER, NOPASS` derived type components. Such procedures may *not* be referenced as implicitly typed functions without first being associated with a function pointer. +* Some intrinsic functions (`COUNT`, `LBOUND`, `LCOBOUND`, `TRANSFER`, + `UBOUND`, and `UCOBOUND`) have arguments (usually `DIM=`) that are documented + as not allowing `OPTIONAL` dummy arguments to appear as their values. + This prohibition appeared on the `DIM=` arguments of more + intrinsic functions in earlier revisions of the ISO standard. + (Perhaps these are meant to avoid misunderstanding these arguments, + which appear in square brackets in the synopses, as if their dynamic + presence at runtime could affect the semantics of the intrinsic in + the same way as the static presence or absence of the argument does + at compilation time, which would not be possible.) + No compiler seems to enforce this requirement. + We interpret it + to mean that an `OPTIONAL` dummy argument may appear but must be present + during execution, just as a pointer argument must be associated or an + allocatable argument must be allocated. ## Extensions, deletions, and legacy features supported by default