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 &ndash; or a file using such a symbol via use
+        association &ndash; 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>

Reply via email to