The following patch updates the Fortran part of the GCC 4.8 release
notes at http://gcc.gnu.org/gcc-4.8/changes.html#fortran
It adds quips for
- CLASS(*)
- The new BACKTRACE intrinsic
- A compatibility notice
I would like if someone could comment on the latter. I think it is time
to explicitly inform about compatibility issues with gfortran. So far,
smaller ABI changes were done all the time [affecting very special cases
or very experimental features] and the .mod version was different in
every release.
(The smaller ABI changes were related to code which required modules,
hence, the .mod version change forced users to re-compile. In fact, the
.mod version change in 4.8 has just be done to force recompilation.*
Thus, the past ABI breakages were and this ABI breakage is very unlikely
to lead to run-time/link-time issues.)
Comments? Suggestions?
Tobias
* The background for 4.8's ABI changes were: The module name was missing
from module-defined procedure-pointer variables, leading to a potential
naming clash with same-name variables in different modules. And the
deferred-length string ABI was changed as some systems didn't like a "."
in the assembler name of a variable.
Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.8/changes.html,v
retrieving revision 1.73
diff -p -u -r1.73 changes.html
--- changes.html 19 Dec 2012 21:54:50 -0000 1.73
+++ changes.html 20 Dec 2012 09:43:10 -0000
@@ -243,6 +243,35 @@ B b(42); // OK
<h3 id="fortran">Fortran</h3>
<ul>
+ <li>Compatibility notice:
+ <ul>
+ <li>Module files: The version of the module files (<code>.mod</code>)
+ has been incremented. Fortran <code>MODULE</code>s compiled by earlier
+ GCC versions have to be recompiled, when they are <code>USE</code>d by
+ files compiled with GCC 4.8, because GCC 4.8 is not able to read
+ <code>.mod</code> file of earlier GCC versions; attempting to do so
+ gives an error message. Note: The ABI of the produced assembler data
+ itself has not changed; object files and libraries are fully compatible
+ to older versions. (Except as noted below.)</li>
+ <li>ABI: Some internal names (name in the assembler/object file) have
+ changed for symbols declared in the specification part of a module.
+ If the module – or a file using such a symbol via use
+ association – is recompiled, the module and all files which
+ directly use such symbols have to be recompiled. The change only
+ affects the following kind of module symbols:
+ <ul>
+ <li>Procedure pointers. Note: C-interoperable function pointers
+ (<code>type(c_funptr)</code>) are not affected nor are
+ procedure-pointer components.</li>
+ <li>Deferred-length character strings.</li>
+ </ul></li>
+ </ul></li>
+
+ <li>The <a href="http://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html">
+ <code>BACKTRACE</code></a> intrinsic subroutine has been added. It shows
+ a backtrace at an arbitrary place in user code; program execution
+ continues normally afterwards.</li>
+
<li>The <code><a
href="http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html">
-Wc-binding-type</a></code> warning option has been added (disabled
@@ -301,6 +330,12 @@ B b(42); // OK
<a href="http://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html">user
manual</a>.</li>
+ <li><a href="http://gcc.gnu.org/wiki/Fortran2003Status">Fortran 2003</a>:
+ <li>Experimental support for unlimited polymorphic variables
+ (<code>CLASS(*)</code>) has been added.</li>
+ <ul>
+ </ul></li>
+
<li><a href="http://gcc.gnu.org/wiki/TS29113Status">TS 29113</a>:
<ul>
<li>Assumed types (<code>TYPE(*)</code>) are now supported.</li>