diff options
Diffstat (limited to 'flang/docs/Extensions.md')
-rw-r--r-- | flang/docs/Extensions.md | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/flang/docs/Extensions.md b/flang/docs/Extensions.md index 420b751..6d87209 100644 --- a/flang/docs/Extensions.md +++ b/flang/docs/Extensions.md @@ -84,7 +84,7 @@ end be "local identifiers" and should be distinct in the "inclusive scope" -- i.e., not scoped by `BLOCK` constructs. As most (but not all) compilers implement `BLOCK` scoping of construct - names, so does f18, with a portability warning. + names, so does Flang, with a portability warning. * 15.6.4 paragraph 2 prohibits an implicitly typed statement function from sharing the same name as a symbol in its scope's host, if it has one. @@ -153,7 +153,7 @@ end that a call to intrinsic module procedure `ieee_support_halting` with a constant argument has a compile time constant result in `constant expression` and `specification expression` contexts. In compilations - where this information is not known at compile time, f18 generates code + where this information is not known at compile time, Flang generates code to determine the absence or presence of this capability at runtime. A call to `ieee_support_halting` in contexts that the standard requires to be constant will generate a compilation error. `ieee_support_standard` @@ -366,7 +366,7 @@ end * The legacy extension intrinsic functions `IZEXT` and `JZEXT` are supported; `ZEXT` has different behavior with various older compilers, so it is not supported. -* f18 doesn't impose a limit on the number of continuation lines +* Flang doesn't impose a limit on the number of continuation lines allowed for a single statement. * When a type-bound procedure declaration statement has neither interface nor attributes, the "::" before the bindings is optional, even @@ -553,7 +553,7 @@ end * Fortran explicitly ignores type declaration statements when they attempt to type the name of a generic intrinsic function (8.2 p3). One can declare `CHARACTER::COS` and still get a real result - from `COS(3.14159)`, for example. f18 will complain when a + from `COS(3.14159)`, for example. Flang will complain when a generic intrinsic function's inferred result type does not match an explicit declaration. This message is a warning. @@ -570,7 +570,7 @@ end ## Standard features that might as well not be -* f18 supports designators with constant expressions, properly +* Flang supports designators with constant expressions, properly constrained, as initial data targets for data pointers in initializers of variable and component declarations and in `DATA` statements; e.g., `REAL, POINTER :: P => T(1:10:2)`. @@ -587,8 +587,8 @@ end * The standard doesn't explicitly require that a named constant that appears as part of a complex-literal-constant be a scalar, but most compilers emit an error when an array appears. - f18 supports them with a portability warning. -* f18 does not enforce a blanket prohibition against generic + Flang supports them with a portability warning. +* Flang does not enforce a blanket prohibition against generic interfaces containing a mixture of functions and subroutines. We allow both to appear, unlike several other Fortran compilers. This is especially desirable when two generics of the same @@ -655,7 +655,7 @@ end treat them as references to implicitly typed local variables, and load uninitialized values. - In f18, we chose to emit an error message for this case since the standard + In Flang, we chose to emit an error message for this case since the standard is unclear, the usage is not portable, and the issue can be easily resolved by adding a declaration. @@ -686,7 +686,7 @@ end * When a `DATA` statement in a `BLOCK` construct could be construed as either initializing a host-associated object or declaring a new local - initialized object, f18 interprets the standard's classification of + initialized object, Flang interprets the standard's classification of a `DATA` statement as being a "declaration" rather than a "specification" construct, and notes that the `BLOCK` construct is defined as localizing names that have specifications in the `BLOCK` construct. @@ -703,7 +703,7 @@ end subroutine Other Fortran compilers disagree with each other in their interpretations of this example. The precedent among the most commonly used compilers - agrees with f18's interpretation: a `DATA` statement without any other + agrees with Flang's interpretation: a `DATA` statement without any other specification of the name refers to the host-associated object. * Many Fortran compilers allow a non-generic procedure to be `USE`-associated @@ -729,7 +729,7 @@ module m2 end module ``` - This case elicits a warning from f18, as it should not be treated + This case elicits a warning from Flang, as it should not be treated any differently than the same case with the non-generic procedure of the same name being defined in the same scope rather than being `USE`-associated into it, which is explicitly non-conforming in the @@ -747,7 +747,7 @@ end module symbols, much less appear in specification inquiries, and there are application codes that expect exterior symbols whose names match components to be visible in a derived-type definition's default initialization - expressions, and so f18 follows that precedent. + expressions, and so Flang follows that precedent. * 19.3.1p1 "Within its scope, a local identifier of an entity of class (1) or class (4) shall not be the same as a global identifier used in that scope..." @@ -769,17 +769,17 @@ end module left-hand side for a pointer assignment statement, and we emit a portability warning when it is not. -* F18 allows a `USE` statement to reference a module that is defined later +* Flang allows a `USE` statement to reference a module that is defined later in the same compilation unit, so long as mutual dependencies do not form a cycle. This feature forestalls any risk of such a `USE` statement reading an obsolete module file from a previous compilation and then overwriting that file later. -* F18 allows `OPTIONAL` dummy arguments to interoperable procedures +* Flang allows `OPTIONAL` dummy arguments to interoperable procedures unless they are `VALUE` (C865). -* F18 processes the `NAMELIST` group declarations in a scope after it +* Flang processes the `NAMELIST` group declarations in a scope after it has resolved all of the names in that scope. This means that names that appear before their local declarations do not resolve to host associated objects and do not elicit errors about improper redeclarations @@ -862,11 +862,11 @@ print *, [(j,j=1,10)] * The Fortran standard doesn't mention integer overflow explicitly. In many cases, however, integer overflow makes programs non-conforming. - F18 follows other widely-used Fortran compilers. Specifically, f18 assumes + Flang follows other widely-used Fortran compilers. Specifically, Flang assumes integer overflow never occurs in address calculations and increment of do-variable unless the option `-fwrapv` is enabled. -* Two new ieee_round_type values were added in f18 beyond the four values +* Two new ieee_round_type values were added in Flang beyond the four values defined in f03 and f08: ieee_away and ieee_other. Contemporary hardware typically does not have support for these rounding modes; ieee_support_rounding calls for these values return false. |