GNU Fortran Changelog

What's new in GNU Fortran 4.6.2

Aug 19, 2013
  • GCC now ships with the LGPL-licensed libquadmath library, which provides for targets with a __float128 datatype quad-precision mathematical functions. __float128 is available for targets on 32-bit x86, x86-64 and Itanium architectures. The libquadmath library is automatically build on such targets when building the Fortran compiler.
  • On systems supporting the libquadmath library, GNU Fortran now also supports a quad-precision, kind=16 floating-point data type (REAL(16), COMPLEX(16)). As the data type is not fully supported in hardware, calculations might be one to two orders of magnitute slower than with the 4, 8 or 10 bytes floating-point data types. This change does not affect systems which support REAL(16) in hardware nor those which do not support libquadmath.
  • Much improved compile time for large array constructors.
  • In order to reduce execution time and memory usage, use of temporary arrays in assignment expressions is avoided for many cases. The compiler now reverses loops in order to avoid generating a temporary array where possible.
  • Improved diagnostics, especially with -fwhole-file.
  • -fwhole-file flag is now enabled by default. The flag improves the code generation and diagnostics. It can be disabled using the deprecated -fno-whole-file flag.
  • Support the generation of Makefile dependencies via the `-M...` flags of GCC; you may need to specify additionally the -cpp option. The dependencies take modules, Fortran's include, and CPP's #include into account. Note: Using -M for the module path is no longer supported, use -J instead.
  • A new command-line option -Wunused-dummy-argument warns about unused dummy arguments and is included in -Wall. Before -Wunused-variable also warned about unused dummy arguments.
  • The flag -Wconversion has been modified to issue only warnings if the conversion leads to information loss, which drastically reduces the number of warnings; -Wconversion is thus now enabled with -Wall. The flag -Wconversion-extra has been added and warns also about other conversion; -Wconversion-extra typically shows a huge number warnings, most of which can be ignored.

New in GNU Fortran 4.4 (Feb 4, 2009)

  • Support for a few Fortran 2008 intrinsics: ASINH, ACOSH, ATANH, ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT and ERFC_SCALED (some of these were available as vendor extension before). Missing are the three-argument form of BESSEL_*N and the complex versions of A{SIN,COS,TAN}{,H}.
  • Fortran 2003 I/O extensions: Asynchronous I/O is supported (still implemented as synchronous I/O), decimal=, size=, sign=, pad= blank=, delim= specifiers.
  • Wide characters: "ISO_10646" (UCS-4, kind=4) including I/O with encoding="UTF-8". (Unsupported are UTF-8 characters in the Fortran source files; use -fbackslash with u... and U... instead.)
  • Support for Fortran 2003 structure constructors.
  • Support for Fortran 2003 array constructor with typespec.
  • REVERTED: Temporarily, arrays with maximal rank of 15 (before 7) as required by Fortran 2008 were supported, but the patch has been reverted because of PR36825
  • Employ libcpp directly instead of using cc1 as an external preprocessor. The -cpp option was added to allow manual invocation of the preprocessor.
  • Fortran 2008 g0 format descriptor.
  • Procedure Pointers (but not yet as component in derived types and as function results)
  • Version 3 of the OpenMP specification is now supported by the C, C++ and Fortran frontend (before version 2.5 was implemented).
  • If using an intrinsic not part of the selected standard (via -std= and -fall-intrinsics) gfortran will now treat it as if this procedure were declared EXTERNAL and try to link to a user-supplied procedure. -Wintrinsics-std will warn whenever this happens. The now-useless option -Wnonstd-intrinsic was removed.
  • The -Warray-temporaries option warns about array temporaries generated by the compiler, as an aid for optimization.
  • As another aid for optimization, when an array temporary had to be created for an function argument, a warning is printed at run time when the option -fcheck-array-temporaries is used. (The difference between -Warray-temporaries and -fcheck-array-temporaries is that the latter only prints a warning if the actual argument is noncontigious and thus the copying actually happens. The -Warray-temporaries already warns when code is inserted to cater for the noncontigious case.)
  • The generation of debugging information (DWARF) has been further enhanced. Note: gdb does not yet support all of these.
  • Fortran 2003 type-bound procedures, both PROCEDURE and GENERIC but not as operators. Note: PASS is not fully supported as CLASS(...) is not implemented; use it with TYPE(...) as non-standard-conforming workaround (to be removed when CLASS is implemented).
  • New flags have been added to control the alignment of variables in COMMON blocks: -falign-commons (which is the default) and its negation -fno-align-commons. The corresponding warnings can be disabled by -Wno-align-commons.
  • Fortran 2008's LEADZ and TRAILZ.