Intel® Fortran Compiler 19.0 Developer Guide and Reference
The major new features for this release are as follows:
Intrinsic subroutine FOR_LFENCE
Inserts a memory load fence instruction that ensures completion of preceding load instructions. For more information, see FOR_LFENCE.
Intrinsic subroutine FOR_MFENCE
Inserts a memory fence instruction that ensures completion of preceding load and store instructions. For more information, see FOR_MFENCE.
Intrinsic subroutine FOR_SFENCE
Inserts a memory store fence instruction that ensures completion of preceding store instructions. For more information, see FOR_SFENCE.
Compiler options check shape and warn shape
Option check shape enables compile-time and run-time array conformance checking in contexts where it is required by the standard. For more information, see check.
Option warn shape changes array conformance violations from errors to warnings if option check shape is specified. For more information, see warn.
Compiler option assume [no]recursion
Sets the default compilation mode for procedures that are not declared RECURSIVE or NON_RECURSIVE. For more information, see assume.
Compiler option stand f18
Performs standard conformance checking for the Fortran 2018 standard; this option was previously spelled stand f15. For more information, see stand.
The 2 GB limit on coarray assignments has been removed.
For direct access files, the maximum record length of 2**31-1 has been removed. The Fortran standard does not specify an upper limit on record lengths. The maximum size is now determined by how much memory is available at the time the file is opened and the file buffer is allocated.
Extensions to the VECTOR general directive
You can now specify a VECTORLENGTH clause, which lets you suggest an optimal vector length to be used by the vectorizer. For more information, see VECTOR.
You can now specify a DYNAMIC_ALIGN [(var)] or NODYNAMIC_ALIGN clause, which enables or disables dynamic alignment optimization, respectively. You can optionally use (var) to recommend the address on which to align the loop. For more information, see VECTOR.
Extension to the SIMD loop directive
You can now specify a [NO]ASSERT clause, which directs the compiler to assert (produce an error) or not to assert (produce a warning) when the vectorization fails. For more information, see SIMD Loop Directive.
The following are new OpenMP* features:
Fortran BLOCK/END BLOCK constructs can now be used inside OpenMP* regions and constructs.
The DECLARE REDUCTION directive
Allows custom user-defined reduction operations. For more information, see DECLARE REDUCTION.
Extensions to the REDUCTION clause
You can now specify a reduction identifier in the clause. For more information, see REDUCTION clause
Extension to the OpenMP* SIMD directive
You can now specify a [NO]ASSERT clause, which directs the compiler to assert (produce an error) or not to assert (produce a warning) when the vectorization fails. For more information, see SIMD Directive (OpenMP* API).
For a summary of Fortran 2003 features, see Fortran 2003 Features.
For a summary of new Fortran 2008 features, see Fortran 2008 Features.
For a summary of new Fortran 2018 features, see Fortran 2018 Features.
For information on new compiler options in this release, see New Options in the Compiler Options reference.
For information about the Fortran standards, visit the Fortran standards technical committee website at http://j3-fortran.org/.
For information about the OpenMP* standards, see the OpenMP website at http://www.openmp.org/.