Fortran 2003 (and Earlier) Support
As of compiler version 16.0 (Intel® Parallel Studio XE 2016), the Intel® [Visual] Fortran compiler is fully compliant with the ISO/IEC 1539-1:2004 Fortran language standard (Fortran 2003 Language). Intel Fortran also fully supports programs that conform to the earlier standards Fortran 95, Fortran 90, FORTRAN 77 and FORTRAN IV (FORTRAN 66.) In some cases, compiler options may need to be specified to enable support of behavior that was different in earlier versions of the Fortran standard.
Fortran 2008 Support
The Intel [Visual] Fortran Compiler supports most features that are new to the current revision of the Fortran standard: Fortran 2008 (ISO/IEC 1539-1:2010). Additional Fortran 2008 features will appear in future versions.
As of compiler version 17.0 (Intel Parallel Studio XE 2017), the significant Fortran 2008 features not yet supported are:
- Allocatable components of recursive type
- Subscripts and implied-DO limits in DATA can be any constant expression (previously limited to constants, other implied-DO variables and intrinsic operators)
- User-defined operators in specification expressions
- Intrinsic assignment to polymorphic variables
- Pointer functions on left side of assignment statement
- Adding ASYNCHRONOUS or VOLATILE attributes inside BLOCK to a variable declared outside the BLOCK
- Passing a non-pointer data actual argument to a pointer dummy argument
- Complex arguments to ACOS, ACOSH, ASIN, ASINH, ATAN, ATANH, COSH, SINH and TANH may have COMPLEX arguments (TAN already supported)
- ATAN(Y,X) as an alternate spelling of ATAN2.
- Intrinsic function FINDLOC
- Optional BACK= argument to intrinsic functions MAXLOC and MINLOC
- Module intrinsic functions COMPILER_OPTIONS and COMPILER_VERSION
In addition, no coarray-related features are supported on MacOS.
Compiler version 17.0 added support for the following Fortran 2008 features not supported by version 16.0:
- A TYPE specifier may name an intrinsic type
- Pointer initialization
- Implied-shape PARAMETER arrays
- EXIT is allowed in all supported block contexts
- Internal procedures may be interoperable (have BIND(C))
Fortran 2015 Support
Draft Fortran 2015 features supported include:
- All features described in ISO/IEC TS29113:2012, Further Interoperability with C (16.0)
- Assumed type (TYPE(*))
- Assumed rank (DIMENSION(..))
- C descriptors and procedures for manipulating them
- RANK intrinsic
- Relaxed restrictions on interoperable dummy arguments
- Relaxed restrictions on procedures in intrinsic module ISO_C_BINDING
The Intel Fortran compiler also supports a number of extensions to the Fortran standards, as well as command-line options that allow you to override the default actions of the compiler.
In some cases, the default behavior of the Intel Fortran Compiler does not conform to Fortran 2003 semantics. The following table lists the compiler options which are not enabled by default and which must be specified to obtain full Fortran 2003 semantics. Note that, in some cases, enabling these options may lower run-time performance.
The single option /standard-semantics (Windows) or -standard-semantics (Linux and OS X) can be used to set all options required to obtain full Fortran 2003 semantics. If using the IEEE_ARITHMETIC, IEEE_EXCEPTIONS or IEEE_FEATURES intrinsic modules, /fp:strict (Windows) or -fp-model strict (Linux and OS X) must also be specified.
|Windows*||Linux* and OS X*|
|/assume:ieee_fp_flags (if /fp:strict or precise also set)||-assume ieee_fp_flags (if -fp-model strict or precise also set)|
NOTE: Compiler version 17.0 changed the default behavior to be that of /assume:realloc_lhs (-assume realloc_lhs). To disable that behavior in version 17.0 or later, use /assume:norealloc_lhs (-assume norealloc_lhs) or /nostandard-realloc-lhs (-nostandard-realloc-lhs)
For more information, please refer to the "Compiler Options" section of the Intel Fortran Compiler documentation.