public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Remove unused libgfortran functions
@ 2016-12-16 13:01 Janne Blomqvist
  2016-12-16 14:03 ` FX
  2016-12-19 14:48 ` FX
  0 siblings, 2 replies; 13+ messages in thread
From: Janne Blomqvist @ 2016-12-16 13:01 UTC (permalink / raw)
  To: fortran, gcc-patches; +Cc: Janne Blomqvist

Now that the libgfortran ABI major version has been bumped, we can
remove functions for which the frontend nowadays generates inline
code.

This removes the malloc, free, exponent, fraction, nearest, rrspacing,
spacing, set_exponent and transpose intrinsics. Also the unused
store_exe_path function is removed.

Regtested on x86_64-pc-linux-gnu, Ok for trunk?

libgfortran/ChangeLog:

2016-12-16  Janne Blomqvist  <jb@gcc.gnu.org>

	* Makefile.am: Remove exponent, fraction, nearest, rrspacing,
	set_exponent, spacing, transpose, malloc, transpose_generic.
	* Makefile.in: Regenerated.
	* generated/exponent_r10.c: Remove.
	* generated/exponent_r16.c: Remove.
	* generated/exponent_r4.c: Remove.
	* generated/exponent_r8.c: Remove.
	* generated/fraction_r10.c: Remove.
	* generated/fraction_r16.c: Remove.
	* generated/fraction_r4.c: Remove.
	* generated/fraction_r8.c: Remove.
	* generated/nearest_r10.c: Remove.
	* generated/nearest_r16.c: Remove.
	* generated/nearest_r4.c: Remove.
	* generated/nearest_r8.c: Remove.
	* generated/rrspacing_r10.c: Remove.
	* generated/rrspacing_r16.c: Remove.
	* generated/rrspacing_r4.c: Remove.
	* generated/rrspacing_r8.c: Remove.
	* generated/set_exponent_r10.c: Remove.
	* generated/set_exponent_r16.c: Remove.
	* generated/set_exponent_r4.c: Remove.
	* generated/set_exponent_r8.c: Remove.
	* generated/spacing_r10.c: Remove.
	* generated/spacing_r16.c: Remove.
	* generated/spacing_r4.c: Remove.
	* generated/spacing_r8.c: Remove.
	* generated/transpose_c10.c: Remove.
	* generated/transpose_c16.c: Remove.
	* generated/transpose_c4.c: Remove.
	* generated/transpose_c8.c: Remove.
	* generated/transpose_i16.c: Remove.
	* generated/transpose_i4.c: Remove.
	* generated/transpose_i8.c: Remove.
	* generated/transpose_r10.c: Remove.
	* generated/transpose_r16.c: Remove.
	* generated/transpose_r4.c: Remove.
	* generated/transpose_r8.c: Remove.
	* gfortran.map: Remove exponent, fraction, nearest, rrspacing,
	set_exponent, spacing, transpose, malloc, free, transpose_generic,
	store_exe_path.
	* intrinsics/malloc.c: Remove.
	* intrinsics/transpose_generic.c: Remove.
	* libgfortran.h (store_exe_path): Remove.
	* m4/exponent.m4: Remove.
	* m4/fraction.m4: Remove.
	* m4/nearest.m4: Remove.
	* m4/rrspacing.m4: Remove.
	* m4/set_exponent.m4: Remove.
	* m4/spacing.m4: Remove.
	* m4/transpose.m4: Remove.
	* runtime/main.c (store_exe_path): Remove.
---
 libgfortran/Makefile.am                    |  83 +---------------
 libgfortran/generated/exponent_r10.c       |  45 ---------
 libgfortran/generated/exponent_r16.c       |  49 ----------
 libgfortran/generated/exponent_r4.c        |  45 ---------
 libgfortran/generated/exponent_r8.c        |  45 ---------
 libgfortran/generated/fraction_r10.c       |  44 ---------
 libgfortran/generated/fraction_r16.c       |  48 ---------
 libgfortran/generated/fraction_r4.c        |  44 ---------
 libgfortran/generated/fraction_r8.c        |  44 ---------
 libgfortran/generated/nearest_r10.c        |  51 ----------
 libgfortran/generated/nearest_r16.c        |  55 -----------
 libgfortran/generated/nearest_r4.c         |  51 ----------
 libgfortran/generated/nearest_r8.c         |  51 ----------
 libgfortran/generated/rrspacing_r10.c      |  54 -----------
 libgfortran/generated/rrspacing_r16.c      |  58 -----------
 libgfortran/generated/rrspacing_r4.c       |  54 -----------
 libgfortran/generated/rrspacing_r8.c       |  54 -----------
 libgfortran/generated/set_exponent_r10.c   |  44 ---------
 libgfortran/generated/set_exponent_r16.c   |  48 ---------
 libgfortran/generated/set_exponent_r4.c    |  44 ---------
 libgfortran/generated/set_exponent_r8.c    |  44 ---------
 libgfortran/generated/spacing_r10.c        |  53 ----------
 libgfortran/generated/spacing_r16.c        |  57 -----------
 libgfortran/generated/spacing_r4.c         |  53 ----------
 libgfortran/generated/spacing_r8.c         |  53 ----------
 libgfortran/generated/transpose_c10.c      | 115 ----------------------
 libgfortran/generated/transpose_c16.c      | 115 ----------------------
 libgfortran/generated/transpose_c4.c       | 115 ----------------------
 libgfortran/generated/transpose_c8.c       | 115 ----------------------
 libgfortran/generated/transpose_i16.c      | 115 ----------------------
 libgfortran/generated/transpose_i4.c       | 115 ----------------------
 libgfortran/generated/transpose_i8.c       | 115 ----------------------
 libgfortran/generated/transpose_r10.c      | 115 ----------------------
 libgfortran/generated/transpose_r16.c      | 115 ----------------------
 libgfortran/generated/transpose_r4.c       | 115 ----------------------
 libgfortran/generated/transpose_r8.c       | 115 ----------------------
 libgfortran/gfortran.map                   |  41 --------
 libgfortran/intrinsics/malloc.c            |  51 ----------
 libgfortran/intrinsics/transpose_generic.c | 151 -----------------------------
 libgfortran/libgfortran.h                  |   3 -
 libgfortran/m4/exponent.m4                 |  45 ---------
 libgfortran/m4/fraction.m4                 |  44 ---------
 libgfortran/m4/nearest.m4                  |  51 ----------
 libgfortran/m4/rrspacing.m4                |  54 -----------
 libgfortran/m4/set_exponent.m4             |  44 ---------
 libgfortran/m4/spacing.m4                  |  53 ----------
 libgfortran/m4/transpose.m4                | 116 ----------------------
 libgfortran/runtime/main.c                 |   9 --
 48 files changed, 5 insertions(+), 3193 deletions(-)
 delete mode 100644 libgfortran/generated/exponent_r10.c
 delete mode 100644 libgfortran/generated/exponent_r16.c
 delete mode 100644 libgfortran/generated/exponent_r4.c
 delete mode 100644 libgfortran/generated/exponent_r8.c
 delete mode 100644 libgfortran/generated/fraction_r10.c
 delete mode 100644 libgfortran/generated/fraction_r16.c
 delete mode 100644 libgfortran/generated/fraction_r4.c
 delete mode 100644 libgfortran/generated/fraction_r8.c
 delete mode 100644 libgfortran/generated/nearest_r10.c
 delete mode 100644 libgfortran/generated/nearest_r16.c
 delete mode 100644 libgfortran/generated/nearest_r4.c
 delete mode 100644 libgfortran/generated/nearest_r8.c
 delete mode 100644 libgfortran/generated/rrspacing_r10.c
 delete mode 100644 libgfortran/generated/rrspacing_r16.c
 delete mode 100644 libgfortran/generated/rrspacing_r4.c
 delete mode 100644 libgfortran/generated/rrspacing_r8.c
 delete mode 100644 libgfortran/generated/set_exponent_r10.c
 delete mode 100644 libgfortran/generated/set_exponent_r16.c
 delete mode 100644 libgfortran/generated/set_exponent_r4.c
 delete mode 100644 libgfortran/generated/set_exponent_r8.c
 delete mode 100644 libgfortran/generated/spacing_r10.c
 delete mode 100644 libgfortran/generated/spacing_r16.c
 delete mode 100644 libgfortran/generated/spacing_r4.c
 delete mode 100644 libgfortran/generated/spacing_r8.c
 delete mode 100644 libgfortran/generated/transpose_c10.c
 delete mode 100644 libgfortran/generated/transpose_c16.c
 delete mode 100644 libgfortran/generated/transpose_c4.c
 delete mode 100644 libgfortran/generated/transpose_c8.c
 delete mode 100644 libgfortran/generated/transpose_i16.c
 delete mode 100644 libgfortran/generated/transpose_i4.c
 delete mode 100644 libgfortran/generated/transpose_i8.c
 delete mode 100644 libgfortran/generated/transpose_r10.c
 delete mode 100644 libgfortran/generated/transpose_r16.c
 delete mode 100644 libgfortran/generated/transpose_r4.c
 delete mode 100644 libgfortran/generated/transpose_r8.c
 delete mode 100644 libgfortran/intrinsics/malloc.c
 delete mode 100644 libgfortran/intrinsics/transpose_generic.c
 delete mode 100644 libgfortran/m4/exponent.m4
 delete mode 100644 libgfortran/m4/fraction.m4
 delete mode 100644 libgfortran/m4/nearest.m4
 delete mode 100644 libgfortran/m4/rrspacing.m4
 delete mode 100644 libgfortran/m4/set_exponent.m4
 delete mode 100644 libgfortran/m4/spacing.m4
 delete mode 100644 libgfortran/m4/transpose.m4

diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am
index 4745069..964d698 100644
--- a/libgfortran/Makefile.am
+++ b/libgfortran/Makefile.am
@@ -125,7 +125,6 @@ intrinsics/ierrno.c \
 intrinsics/ishftc.c \
 intrinsics/iso_c_generated_procs.c \
 intrinsics/iso_c_binding.c \
-intrinsics/malloc.c \
 intrinsics/mvbits.c \
 intrinsics/move_alloc.c \
 intrinsics/pack_generic.c \
@@ -139,7 +138,6 @@ intrinsics/reshape_generic.c \
 intrinsics/reshape_packed.c \
 intrinsics/selected_int_kind.f90 \
 intrinsics/selected_real_kind.f90 \
-intrinsics/transpose_generic.c \
 intrinsics/unpack_generic.c \
 runtime/in_pack_generic.c \
 runtime/in_unpack_generic.c
@@ -470,19 +468,6 @@ $(srcdir)/generated/matmul_l4.c \
 $(srcdir)/generated/matmul_l8.c \
 $(srcdir)/generated/matmul_l16.c
 
-i_transpose_c= \
-$(srcdir)/generated/transpose_i4.c \
-$(srcdir)/generated/transpose_i8.c \
-$(srcdir)/generated/transpose_i16.c \
-$(srcdir)/generated/transpose_r4.c \
-$(srcdir)/generated/transpose_r8.c \
-$(srcdir)/generated/transpose_r10.c \
-$(srcdir)/generated/transpose_r16.c \
-$(srcdir)/generated/transpose_c4.c \
-$(srcdir)/generated/transpose_c8.c \
-$(srcdir)/generated/transpose_c10.c \
-$(srcdir)/generated/transpose_c16.c
-
 i_shape_c= \
 $(srcdir)/generated/shape_i1.c \
 $(srcdir)/generated/shape_i2.c \
@@ -564,42 +549,6 @@ $(srcdir)/generated/in_unpack_c8.c \
 $(srcdir)/generated/in_unpack_c10.c \
 $(srcdir)/generated/in_unpack_c16.c
 
-i_exponent_c = \
-$(srcdir)/generated/exponent_r4.c \
-$(srcdir)/generated/exponent_r8.c \
-$(srcdir)/generated/exponent_r10.c \
-$(srcdir)/generated/exponent_r16.c
-
-i_spacing_c = \
-$(srcdir)/generated/spacing_r4.c \
-$(srcdir)/generated/spacing_r8.c \
-$(srcdir)/generated/spacing_r10.c \
-$(srcdir)/generated/spacing_r16.c
-
-i_rrspacing_c = \
-$(srcdir)/generated/rrspacing_r4.c \
-$(srcdir)/generated/rrspacing_r8.c \
-$(srcdir)/generated/rrspacing_r10.c \
-$(srcdir)/generated/rrspacing_r16.c
-
-i_fraction_c = \
-$(srcdir)/generated/fraction_r4.c \
-$(srcdir)/generated/fraction_r8.c \
-$(srcdir)/generated/fraction_r10.c \
-$(srcdir)/generated/fraction_r16.c
-
-i_nearest_c = \
-$(srcdir)/generated/nearest_r4.c \
-$(srcdir)/generated/nearest_r8.c \
-$(srcdir)/generated/nearest_r10.c \
-$(srcdir)/generated/nearest_r16.c
-
-i_set_exponent_c = \
-$(srcdir)/generated/set_exponent_r4.c \
-$(srcdir)/generated/set_exponent_r8.c \
-$(srcdir)/generated/set_exponent_r10.c \
-$(srcdir)/generated/set_exponent_r16.c
-
 i_pow_c = \
 $(srcdir)/generated/pow_i4_i4.c \
 $(srcdir)/generated/pow_i8_i4.c \
@@ -683,9 +632,9 @@ m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
     m4/matmul.m4 m4/matmull.m4 m4/ifunction_logical.m4 \
     m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
     m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
-    m4/transpose.m4 m4/eoshift1.m4 m4/eoshift3.m4 m4/exponent.m4 \
-    m4/fraction.m4 m4/nearest.m4 m4/set_exponent.m4 m4/pow.m4 \
-    m4/misc_specifics.m4 m4/rrspacing.m4 m4/spacing.m4 m4/pack.m4 \
+    m4/eoshift1.m4 m4/eoshift3.m4 \
+    m4/pow.m4 \
+    m4/misc_specifics.m4 m4/pack.m4 \
     m4/unpack.m4 m4/spread.m4 m4/bessel.m4 m4/norm2.m4 m4/parity.m4 \
     m4/iall.m4 m4/iany.m4 m4/iparity.m4
 
@@ -693,10 +642,9 @@ gfor_built_src= $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
     $(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
     $(i_product_c) $(i_sum_c) $(i_bessel_c) $(i_iall_c) $(i_iany_c) \
     $(i_iparity_c) $(i_norm2_c) $(i_parity_c) \
-    $(i_matmul_c) $(i_matmull_c) $(i_transpose_c) $(i_shape_c) $(i_eoshift1_c) \
+    $(i_matmul_c) $(i_matmull_c) $(i_shape_c) $(i_eoshift1_c) \
     $(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \
-    $(i_exponent_c) $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) \
-    $(i_pow_c) $(i_rrspacing_c) $(i_spacing_c) $(i_pack_c) $(i_unpack_c) \
+    $(i_pow_c) $(i_pack_c) $(i_unpack_c) \
     $(i_spread_c) selected_int_kind.inc selected_real_kind.inc kinds.h \
     $(i_cshift0_c) kinds.inc c99_protos.inc fpu-target.h fpu-target.inc
 
@@ -1000,9 +948,6 @@ $(i_norm2_c): m4/norm2.m4 $(I_M4_DEPS1)
 $(i_parity_c): m4/parity.m4 $(I_M4_DEPS1)
 	$(M4) -Dfile=$@ -I$(srcdir)/m4 parity.m4 > $@
 
-$(i_transpose_c): m4/transpose.m4 $(I_M4_DEPS)
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 transpose.m4 > $@
-
 $(i_shape_c): m4/shape.m4 $(I_M4_DEPS)
 	$(M4) -Dfile=$@ -I$(srcdir)/m4 shape.m4 > $@
 
@@ -1027,24 +972,6 @@ $(in_pack_c): m4/in_pack.m4 $(I_M4_DEPS)
 $(in_unpack_c): m4/in_unpack.m4 $(I_M4_DEPS)
 	$(M4) -Dfile=$@ -I$(srcdir)/m4 in_unpack.m4 > $@
 
-$(i_exponent_c): m4/exponent.m4 m4/mtype.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 exponent.m4 > $@
-
-$(i_rrspacing_c): m4/rrspacing.m4 m4/mtype.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 rrspacing.m4 > $@
-
-$(i_spacing_c): m4/spacing.m4 m4/mtype.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 spacing.m4 > $@
-
-$(i_fraction_c): m4/fraction.m4 m4/mtype.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 fraction.m4 > $@
-
-$(i_nearest_c): m4/nearest.m4 m4/mtype.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 nearest.m4 > $@
-
-$(i_set_exponent_c): m4/set_exponent.m4 m4/mtype.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 set_exponent.m4 > $@
-
 $(i_pow_c): m4/pow.m4 $(I_M4_DEPS)
 	$(M4) -Dfile=$@ -I$(srcdir)/m4 pow.m4 > $@
 
diff --git a/libgfortran/generated/exponent_r10.c b/libgfortran/generated/exponent_r10.c
deleted file mode 100644
index b11f12f..0000000
--- a/libgfortran/generated/exponent_r10.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## l
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FREXPL)
-
-extern GFC_INTEGER_4 exponent_r10 (GFC_REAL_10 s);
-export_proto(exponent_r10);
-
-GFC_INTEGER_4
-exponent_r10 (GFC_REAL_10 s)
-{
-  int ret;
-  MATHFUNC(frexp) (s, &ret);
-  return ret;
-}
-
-#endif
diff --git a/libgfortran/generated/exponent_r16.c b/libgfortran/generated/exponent_r16.c
deleted file mode 100644
index 163b6fd..0000000
--- a/libgfortran/generated/exponent_r16.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define MATHFUNC(funcname) funcname ## q
-#else
-#define MATHFUNC(funcname) funcname ## l
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_FREXPL))
-
-extern GFC_INTEGER_4 exponent_r16 (GFC_REAL_16 s);
-export_proto(exponent_r16);
-
-GFC_INTEGER_4
-exponent_r16 (GFC_REAL_16 s)
-{
-  int ret;
-  MATHFUNC(frexp) (s, &ret);
-  return ret;
-}
-
-#endif
diff --git a/libgfortran/generated/exponent_r4.c b/libgfortran/generated/exponent_r4.c
deleted file mode 100644
index 15d7cba..0000000
--- a/libgfortran/generated/exponent_r4.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## f
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FREXPF)
-
-extern GFC_INTEGER_4 exponent_r4 (GFC_REAL_4 s);
-export_proto(exponent_r4);
-
-GFC_INTEGER_4
-exponent_r4 (GFC_REAL_4 s)
-{
-  int ret;
-  MATHFUNC(frexp) (s, &ret);
-  return ret;
-}
-
-#endif
diff --git a/libgfortran/generated/exponent_r8.c b/libgfortran/generated/exponent_r8.c
deleted file mode 100644
index 6972cc6..0000000
--- a/libgfortran/generated/exponent_r8.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FREXP)
-
-extern GFC_INTEGER_4 exponent_r8 (GFC_REAL_8 s);
-export_proto(exponent_r8);
-
-GFC_INTEGER_4
-exponent_r8 (GFC_REAL_8 s)
-{
-  int ret;
-  MATHFUNC(frexp) (s, &ret);
-  return ret;
-}
-
-#endif
diff --git a/libgfortran/generated/fraction_r10.c b/libgfortran/generated/fraction_r10.c
deleted file mode 100644
index 0d96c31..0000000
--- a/libgfortran/generated/fraction_r10.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Implementation of the FRACTION intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## l
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 fraction_r10 (GFC_REAL_10 s);
-export_proto(fraction_r10);
-
-GFC_REAL_10
-fraction_r10 (GFC_REAL_10 s)
-{
-  int dummy_exp;
-  return MATHFUNC(frexp) (s, &dummy_exp);
-}
-
-#endif
diff --git a/libgfortran/generated/fraction_r16.c b/libgfortran/generated/fraction_r16.c
deleted file mode 100644
index 6ec0f80..0000000
--- a/libgfortran/generated/fraction_r16.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Implementation of the FRACTION intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define MATHFUNC(funcname) funcname ## q
-#else
-#define MATHFUNC(funcname) funcname ## l
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_FREXPL))
-
-extern GFC_REAL_16 fraction_r16 (GFC_REAL_16 s);
-export_proto(fraction_r16);
-
-GFC_REAL_16
-fraction_r16 (GFC_REAL_16 s)
-{
-  int dummy_exp;
-  return MATHFUNC(frexp) (s, &dummy_exp);
-}
-
-#endif
diff --git a/libgfortran/generated/fraction_r4.c b/libgfortran/generated/fraction_r4.c
deleted file mode 100644
index 817da4e..0000000
--- a/libgfortran/generated/fraction_r4.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Implementation of the FRACTION intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## f
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 fraction_r4 (GFC_REAL_4 s);
-export_proto(fraction_r4);
-
-GFC_REAL_4
-fraction_r4 (GFC_REAL_4 s)
-{
-  int dummy_exp;
-  return MATHFUNC(frexp) (s, &dummy_exp);
-}
-
-#endif
diff --git a/libgfortran/generated/fraction_r8.c b/libgfortran/generated/fraction_r8.c
deleted file mode 100644
index 4081d26..0000000
--- a/libgfortran/generated/fraction_r8.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Implementation of the FRACTION intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 fraction_r8 (GFC_REAL_8 s);
-export_proto(fraction_r8);
-
-GFC_REAL_8
-fraction_r8 (GFC_REAL_8 s)
-{
-  int dummy_exp;
-  return MATHFUNC(frexp) (s, &dummy_exp);
-}
-
-#endif
diff --git a/libgfortran/generated/nearest_r10.c b/libgfortran/generated/nearest_r10.c
deleted file mode 100644
index aa5ff8b..0000000
--- a/libgfortran/generated/nearest_r10.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the NEAREST intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## l
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_COPYSIGNL) && defined (HAVE_NEXTAFTERL)
-
-extern GFC_REAL_10 nearest_r10 (GFC_REAL_10 s, GFC_REAL_10 dir);
-export_proto(nearest_r10);
-
-GFC_REAL_10
-nearest_r10 (GFC_REAL_10 s, GFC_REAL_10 dir)
-{
-  dir = MATHFUNC(copysign) (MATHFUNC(__builtin_inf) (), dir);
-  if (FLT_EVAL_METHOD != 0)
-    {
-      /* ??? Work around glibc bug on x86.  */
-      volatile GFC_REAL_10 r = MATHFUNC(nextafter) (s, dir);
-      return r;
-    }
-  else
-    return MATHFUNC(nextafter) (s, dir);
-}
-
-#endif
diff --git a/libgfortran/generated/nearest_r16.c b/libgfortran/generated/nearest_r16.c
deleted file mode 100644
index e690151..0000000
--- a/libgfortran/generated/nearest_r16.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Implementation of the NEAREST intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define MATHFUNC(funcname) funcname ## q
-#else
-#define MATHFUNC(funcname) funcname ## l
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_COPYSIGNL)) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_NEXTAFTERL))
-
-extern GFC_REAL_16 nearest_r16 (GFC_REAL_16 s, GFC_REAL_16 dir);
-export_proto(nearest_r16);
-
-GFC_REAL_16
-nearest_r16 (GFC_REAL_16 s, GFC_REAL_16 dir)
-{
-  dir = MATHFUNC(copysign) (MATHFUNC(__builtin_inf) (), dir);
-  if (FLT_EVAL_METHOD != 0)
-    {
-      /* ??? Work around glibc bug on x86.  */
-      volatile GFC_REAL_16 r = MATHFUNC(nextafter) (s, dir);
-      return r;
-    }
-  else
-    return MATHFUNC(nextafter) (s, dir);
-}
-
-#endif
diff --git a/libgfortran/generated/nearest_r4.c b/libgfortran/generated/nearest_r4.c
deleted file mode 100644
index 3ca83ec..0000000
--- a/libgfortran/generated/nearest_r4.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the NEAREST intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## f
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_COPYSIGNF) && defined (HAVE_NEXTAFTERF)
-
-extern GFC_REAL_4 nearest_r4 (GFC_REAL_4 s, GFC_REAL_4 dir);
-export_proto(nearest_r4);
-
-GFC_REAL_4
-nearest_r4 (GFC_REAL_4 s, GFC_REAL_4 dir)
-{
-  dir = MATHFUNC(copysign) (MATHFUNC(__builtin_inf) (), dir);
-  if (FLT_EVAL_METHOD != 0)
-    {
-      /* ??? Work around glibc bug on x86.  */
-      volatile GFC_REAL_4 r = MATHFUNC(nextafter) (s, dir);
-      return r;
-    }
-  else
-    return MATHFUNC(nextafter) (s, dir);
-}
-
-#endif
diff --git a/libgfortran/generated/nearest_r8.c b/libgfortran/generated/nearest_r8.c
deleted file mode 100644
index 861da2e..0000000
--- a/libgfortran/generated/nearest_r8.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the NEAREST intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_COPYSIGN) && defined (HAVE_NEXTAFTER)
-
-extern GFC_REAL_8 nearest_r8 (GFC_REAL_8 s, GFC_REAL_8 dir);
-export_proto(nearest_r8);
-
-GFC_REAL_8
-nearest_r8 (GFC_REAL_8 s, GFC_REAL_8 dir)
-{
-  dir = MATHFUNC(copysign) (MATHFUNC(__builtin_inf) (), dir);
-  if (FLT_EVAL_METHOD != 0)
-    {
-      /* ??? Work around glibc bug on x86.  */
-      volatile GFC_REAL_8 r = MATHFUNC(nextafter) (s, dir);
-      return r;
-    }
-  else
-    return MATHFUNC(nextafter) (s, dir);
-}
-
-#endif
diff --git a/libgfortran/generated/rrspacing_r10.c b/libgfortran/generated/rrspacing_r10.c
deleted file mode 100644
index d0c6852..0000000
--- a/libgfortran/generated/rrspacing_r10.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## l
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FABSL) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 rrspacing_r10 (GFC_REAL_10 s, int p);
-export_proto(rrspacing_r10);
-
-GFC_REAL_10
-rrspacing_r10 (GFC_REAL_10 s, int p)
-{
-  int e;
-  GFC_REAL_10 x;
-  x = MATHFUNC(fabs) (s);
-  if (x == 0.)
-    return 0.;
-  MATHFUNC(frexp) (s, &e);
-#if defined (HAVE_LDEXPL)
-  return MATHFUNC(ldexp) (x, p - e);
-#else
-  return MATHFUNC(scalbn) (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/libgfortran/generated/rrspacing_r16.c b/libgfortran/generated/rrspacing_r16.c
deleted file mode 100644
index ed0c005..0000000
--- a/libgfortran/generated/rrspacing_r16.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define MATHFUNC(funcname) funcname ## q
-#else
-#define MATHFUNC(funcname) funcname ## l
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_FABSL)) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_FREXPL))
-
-extern GFC_REAL_16 rrspacing_r16 (GFC_REAL_16 s, int p);
-export_proto(rrspacing_r16);
-
-GFC_REAL_16
-rrspacing_r16 (GFC_REAL_16 s, int p)
-{
-  int e;
-  GFC_REAL_16 x;
-  x = MATHFUNC(fabs) (s);
-  if (x == 0.)
-    return 0.;
-  MATHFUNC(frexp) (s, &e);
-#if (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_LDEXPL))
-  return MATHFUNC(ldexp) (x, p - e);
-#else
-  return MATHFUNC(scalbn) (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/libgfortran/generated/rrspacing_r4.c b/libgfortran/generated/rrspacing_r4.c
deleted file mode 100644
index 23c5b86..0000000
--- a/libgfortran/generated/rrspacing_r4.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## f
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FABSF) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 rrspacing_r4 (GFC_REAL_4 s, int p);
-export_proto(rrspacing_r4);
-
-GFC_REAL_4
-rrspacing_r4 (GFC_REAL_4 s, int p)
-{
-  int e;
-  GFC_REAL_4 x;
-  x = MATHFUNC(fabs) (s);
-  if (x == 0.)
-    return 0.;
-  MATHFUNC(frexp) (s, &e);
-#if defined (HAVE_LDEXPF)
-  return MATHFUNC(ldexp) (x, p - e);
-#else
-  return MATHFUNC(scalbn) (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/libgfortran/generated/rrspacing_r8.c b/libgfortran/generated/rrspacing_r8.c
deleted file mode 100644
index 0a8cfef..0000000
--- a/libgfortran/generated/rrspacing_r8.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FABS) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 rrspacing_r8 (GFC_REAL_8 s, int p);
-export_proto(rrspacing_r8);
-
-GFC_REAL_8
-rrspacing_r8 (GFC_REAL_8 s, int p)
-{
-  int e;
-  GFC_REAL_8 x;
-  x = MATHFUNC(fabs) (s);
-  if (x == 0.)
-    return 0.;
-  MATHFUNC(frexp) (s, &e);
-#if defined (HAVE_LDEXP)
-  return MATHFUNC(ldexp) (x, p - e);
-#else
-  return MATHFUNC(scalbn) (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/libgfortran/generated/set_exponent_r10.c b/libgfortran/generated/set_exponent_r10.c
deleted file mode 100644
index de8f59d..0000000
--- a/libgfortran/generated/set_exponent_r10.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## l
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_SCALBNL) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 set_exponent_r10 (GFC_REAL_10 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r10);
-
-GFC_REAL_10
-set_exponent_r10 (GFC_REAL_10 s, GFC_INTEGER_4 i)
-{
-  int dummy_exp;
-  return MATHFUNC(scalbn) (MATHFUNC(frexp) (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/libgfortran/generated/set_exponent_r16.c b/libgfortran/generated/set_exponent_r16.c
deleted file mode 100644
index 1f7c8c7..0000000
--- a/libgfortran/generated/set_exponent_r16.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define MATHFUNC(funcname) funcname ## q
-#else
-#define MATHFUNC(funcname) funcname ## l
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_SCALBNL)) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_FREXPL))
-
-extern GFC_REAL_16 set_exponent_r16 (GFC_REAL_16 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r16);
-
-GFC_REAL_16
-set_exponent_r16 (GFC_REAL_16 s, GFC_INTEGER_4 i)
-{
-  int dummy_exp;
-  return MATHFUNC(scalbn) (MATHFUNC(frexp) (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/libgfortran/generated/set_exponent_r4.c b/libgfortran/generated/set_exponent_r4.c
deleted file mode 100644
index 2c1708b..0000000
--- a/libgfortran/generated/set_exponent_r4.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## f
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_SCALBNF) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 set_exponent_r4 (GFC_REAL_4 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r4);
-
-GFC_REAL_4
-set_exponent_r4 (GFC_REAL_4 s, GFC_INTEGER_4 i)
-{
-  int dummy_exp;
-  return MATHFUNC(scalbn) (MATHFUNC(frexp) (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/libgfortran/generated/set_exponent_r8.c b/libgfortran/generated/set_exponent_r8.c
deleted file mode 100644
index 5b64909..0000000
--- a/libgfortran/generated/set_exponent_r8.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_SCALBN) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 set_exponent_r8 (GFC_REAL_8 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r8);
-
-GFC_REAL_8
-set_exponent_r8 (GFC_REAL_8 s, GFC_INTEGER_4 i)
-{
-  int dummy_exp;
-  return MATHFUNC(scalbn) (MATHFUNC(frexp) (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/libgfortran/generated/spacing_r10.c b/libgfortran/generated/spacing_r10.c
deleted file mode 100644
index 75a7b26..0000000
--- a/libgfortran/generated/spacing_r10.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Implementation of the SPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## l
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 spacing_r10 (GFC_REAL_10 s, int p, int emin, GFC_REAL_10 tiny);
-export_proto(spacing_r10);
-
-GFC_REAL_10
-spacing_r10 (GFC_REAL_10 s, int p, int emin, GFC_REAL_10 tiny)
-{
-  int e;
-  if (s == 0.)
-    return tiny;
-  MATHFUNC(frexp) (s, &e);
-  e = e - p;
-  e = e > emin ? e : emin;
-#if defined (HAVE_LDEXPL)
-  return MATHFUNC(ldexp) (1., e);
-#else
-  return MATHFUNC(scalbn) (1., e);
-#endif
-}
-
-#endif
diff --git a/libgfortran/generated/spacing_r16.c b/libgfortran/generated/spacing_r16.c
deleted file mode 100644
index acff212..0000000
--- a/libgfortran/generated/spacing_r16.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the SPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define MATHFUNC(funcname) funcname ## q
-#else
-#define MATHFUNC(funcname) funcname ## l
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_FREXPL))
-
-extern GFC_REAL_16 spacing_r16 (GFC_REAL_16 s, int p, int emin, GFC_REAL_16 tiny);
-export_proto(spacing_r16);
-
-GFC_REAL_16
-spacing_r16 (GFC_REAL_16 s, int p, int emin, GFC_REAL_16 tiny)
-{
-  int e;
-  if (s == 0.)
-    return tiny;
-  MATHFUNC(frexp) (s, &e);
-  e = e - p;
-  e = e > emin ? e : emin;
-#if (defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_LDEXPL))
-  return MATHFUNC(ldexp) (1., e);
-#else
-  return MATHFUNC(scalbn) (1., e);
-#endif
-}
-
-#endif
diff --git a/libgfortran/generated/spacing_r4.c b/libgfortran/generated/spacing_r4.c
deleted file mode 100644
index 383713f..0000000
--- a/libgfortran/generated/spacing_r4.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Implementation of the SPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname ## f
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 spacing_r4 (GFC_REAL_4 s, int p, int emin, GFC_REAL_4 tiny);
-export_proto(spacing_r4);
-
-GFC_REAL_4
-spacing_r4 (GFC_REAL_4 s, int p, int emin, GFC_REAL_4 tiny)
-{
-  int e;
-  if (s == 0.)
-    return tiny;
-  MATHFUNC(frexp) (s, &e);
-  e = e - p;
-  e = e > emin ? e : emin;
-#if defined (HAVE_LDEXPF)
-  return MATHFUNC(ldexp) (1., e);
-#else
-  return MATHFUNC(scalbn) (1., e);
-#endif
-}
-
-#endif
diff --git a/libgfortran/generated/spacing_r8.c b/libgfortran/generated/spacing_r8.c
deleted file mode 100644
index 2641910..0000000
--- a/libgfortran/generated/spacing_r8.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Implementation of the SPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-
-
-
-#define MATHFUNC(funcname) funcname
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 spacing_r8 (GFC_REAL_8 s, int p, int emin, GFC_REAL_8 tiny);
-export_proto(spacing_r8);
-
-GFC_REAL_8
-spacing_r8 (GFC_REAL_8 s, int p, int emin, GFC_REAL_8 tiny)
-{
-  int e;
-  if (s == 0.)
-    return tiny;
-  MATHFUNC(frexp) (s, &e);
-  e = e - p;
-  e = e > emin ? e : emin;
-#if defined (HAVE_LDEXP)
-  return MATHFUNC(ldexp) (1., e);
-#else
-  return MATHFUNC(scalbn) (1., e);
-#endif
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_c10.c b/libgfortran/generated/transpose_c10.c
deleted file mode 100644
index 67f82f8..0000000
--- a/libgfortran/generated/transpose_c10.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-extern void transpose_c10 (gfc_array_c10 * const restrict ret, 
-	gfc_array_c10 * const restrict source);
-export_proto(transpose_c10);
-
-void
-transpose_c10 (gfc_array_c10 * const restrict ret, 
-	gfc_array_c10 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_COMPLEX_10 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_COMPLEX_10 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_COMPLEX_10));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_c16.c b/libgfortran/generated/transpose_c16.c
deleted file mode 100644
index 927fa27..0000000
--- a/libgfortran/generated/transpose_c16.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-extern void transpose_c16 (gfc_array_c16 * const restrict ret, 
-	gfc_array_c16 * const restrict source);
-export_proto(transpose_c16);
-
-void
-transpose_c16 (gfc_array_c16 * const restrict ret, 
-	gfc_array_c16 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_COMPLEX_16 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_COMPLEX_16 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_COMPLEX_16));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_c4.c b/libgfortran/generated/transpose_c4.c
deleted file mode 100644
index d8811d0..0000000
--- a/libgfortran/generated/transpose_c4.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-extern void transpose_c4 (gfc_array_c4 * const restrict ret, 
-	gfc_array_c4 * const restrict source);
-export_proto(transpose_c4);
-
-void
-transpose_c4 (gfc_array_c4 * const restrict ret, 
-	gfc_array_c4 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_COMPLEX_4 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_COMPLEX_4 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_COMPLEX_4));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_c8.c b/libgfortran/generated/transpose_c8.c
deleted file mode 100644
index 40a73e6..0000000
--- a/libgfortran/generated/transpose_c8.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-extern void transpose_c8 (gfc_array_c8 * const restrict ret, 
-	gfc_array_c8 * const restrict source);
-export_proto(transpose_c8);
-
-void
-transpose_c8 (gfc_array_c8 * const restrict ret, 
-	gfc_array_c8 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_COMPLEX_8 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_COMPLEX_8 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_COMPLEX_8));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_i16.c b/libgfortran/generated/transpose_i16.c
deleted file mode 100644
index 6812003c..0000000
--- a/libgfortran/generated/transpose_i16.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-extern void transpose_i16 (gfc_array_i16 * const restrict ret, 
-	gfc_array_i16 * const restrict source);
-export_proto(transpose_i16);
-
-void
-transpose_i16 (gfc_array_i16 * const restrict ret, 
-	gfc_array_i16 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_INTEGER_16 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_INTEGER_16 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_INTEGER_16));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_i4.c b/libgfortran/generated/transpose_i4.c
deleted file mode 100644
index dbc5d43..0000000
--- a/libgfortran/generated/transpose_i4.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-extern void transpose_i4 (gfc_array_i4 * const restrict ret, 
-	gfc_array_i4 * const restrict source);
-export_proto(transpose_i4);
-
-void
-transpose_i4 (gfc_array_i4 * const restrict ret, 
-	gfc_array_i4 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_INTEGER_4 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_INTEGER_4 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_INTEGER_4));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_i8.c b/libgfortran/generated/transpose_i8.c
deleted file mode 100644
index 631eef3..0000000
--- a/libgfortran/generated/transpose_i8.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-extern void transpose_i8 (gfc_array_i8 * const restrict ret, 
-	gfc_array_i8 * const restrict source);
-export_proto(transpose_i8);
-
-void
-transpose_i8 (gfc_array_i8 * const restrict ret, 
-	gfc_array_i8 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_INTEGER_8 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_INTEGER_8 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_INTEGER_8));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_r10.c b/libgfortran/generated/transpose_r10.c
deleted file mode 100644
index 8c27613..0000000
--- a/libgfortran/generated/transpose_r10.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-extern void transpose_r10 (gfc_array_r10 * const restrict ret, 
-	gfc_array_r10 * const restrict source);
-export_proto(transpose_r10);
-
-void
-transpose_r10 (gfc_array_r10 * const restrict ret, 
-	gfc_array_r10 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_REAL_10 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_REAL_10 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_REAL_10));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_r16.c b/libgfortran/generated/transpose_r16.c
deleted file mode 100644
index 2e4fd24..0000000
--- a/libgfortran/generated/transpose_r16.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-extern void transpose_r16 (gfc_array_r16 * const restrict ret, 
-	gfc_array_r16 * const restrict source);
-export_proto(transpose_r16);
-
-void
-transpose_r16 (gfc_array_r16 * const restrict ret, 
-	gfc_array_r16 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_REAL_16 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_REAL_16 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_REAL_16));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_r4.c b/libgfortran/generated/transpose_r4.c
deleted file mode 100644
index d24fa9b..0000000
--- a/libgfortran/generated/transpose_r4.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-extern void transpose_r4 (gfc_array_r4 * const restrict ret, 
-	gfc_array_r4 * const restrict source);
-export_proto(transpose_r4);
-
-void
-transpose_r4 (gfc_array_r4 * const restrict ret, 
-	gfc_array_r4 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_REAL_4 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_REAL_4 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_REAL_4));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/generated/transpose_r8.c b/libgfortran/generated/transpose_r8.c
deleted file mode 100644
index 7834aa2..0000000
--- a/libgfortran/generated/transpose_r8.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-extern void transpose_r8 (gfc_array_r8 * const restrict ret, 
-	gfc_array_r8 * const restrict source);
-export_proto(transpose_r8);
-
-void
-transpose_r8 (gfc_array_r8 * const restrict ret, 
-	gfc_array_r8 * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  GFC_REAL_8 * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const GFC_REAL_8 *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof (GFC_REAL_8));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif
diff --git a/libgfortran/gfortran.map b/libgfortran/gfortran.map
index ba01f25..3d540ea 100644
--- a/libgfortran/gfortran.map
+++ b/libgfortran/gfortran.map
@@ -92,10 +92,6 @@ GFORTRAN_1.0 {
     _gfortran_etime_sub;
     _gfortran_exit_i4;
     _gfortran_exit_i8;
-    _gfortran_exponent_r10;
-    _gfortran_exponent_r16;
-    _gfortran_exponent_r4;
-    _gfortran_exponent_r8;
     _gfortran_fdate;
     _gfortran_fdate_sub;
     _gfortran_fget;
@@ -122,11 +118,6 @@ GFORTRAN_1.0 {
     _gfortran_fput_i2_sub;
     _gfortran_fput_i4_sub;
     _gfortran_fput_i8_sub;
-    _gfortran_fraction_r10;
-    _gfortran_fraction_r16;
-    _gfortran_fraction_r4;
-    _gfortran_fraction_r8;
-    _gfortran_free;
     _gfortran_fseek_sub;
     _gfortran_fstat_i4;
     _gfortran_fstat_i4_sub;
@@ -189,7 +180,6 @@ GFORTRAN_1.0 {
     _gfortran_lstat_i8_sub;
     _gfortran_ltime_i4;
     _gfortran_ltime_i8;
-    _gfortran_malloc;
     _gfortran_matmul_c10;
     _gfortran_matmul_c16;
     _gfortran_matmul_c4;
@@ -492,10 +482,6 @@ GFORTRAN_1.0 {
     _gfortran_mvbits_i2;
     _gfortran_mvbits_i4;
     _gfortran_mvbits_i8;
-    _gfortran_nearest_r10;
-    _gfortran_nearest_r16;
-    _gfortran_nearest_r4;
-    _gfortran_nearest_r8;
     _gfortran_os_error;
     _gfortran_pack;
     _gfortran_pack_char;
@@ -571,10 +557,6 @@ GFORTRAN_1.0 {
     _gfortran_reshape_r16;
     _gfortran_reshape_r4;
     _gfortran_reshape_r8;
-    _gfortran_rrspacing_r10;
-    _gfortran_rrspacing_r16;
-    _gfortran_rrspacing_r4;
-    _gfortran_rrspacing_r8;
     _gfortran_runtime_error;
     _gfortran_runtime_error_at;
     _gfortran_secnds;
@@ -585,10 +567,6 @@ GFORTRAN_1.0 {
     _gfortran_select_string;
     _gfortran_set_args;
     _gfortran_set_convert;
-    _gfortran_set_exponent_r10;
-    _gfortran_set_exponent_r16;
-    _gfortran_set_exponent_r4;
-    _gfortran_set_exponent_r8;
     _gfortran_set_fpe;
     _gfortran_set_max_subrecord_length;
     _gfortran_set_record_marker;
@@ -730,10 +708,6 @@ GFORTRAN_1.0 {
     _gfortran_sminval_r16;
     _gfortran_sminval_r4;
     _gfortran_sminval_r8;
-    _gfortran_spacing_r10;
-    _gfortran_spacing_r16;
-    _gfortran_spacing_r4;
-    _gfortran_spacing_r8;
     _gfortran_specific__abs_c10;
     _gfortran_specific__abs_c16;
     _gfortran_specific__abs_c4;
@@ -937,7 +911,6 @@ GFORTRAN_1.0 {
     _gfortran_st_open;
     _gfortran_stop_numeric;
     _gfortran_stop_string;
-    _gfortran_store_exe_path;
     _gfortran_st_read;
     _gfortran_st_read_done;
     _gfortran_st_rewind;
@@ -980,19 +953,6 @@ GFORTRAN_1.0 {
     _gfortran_transfer_integer;
     _gfortran_transfer_logical;
     _gfortran_transfer_real;
-    _gfortran_transpose;
-    _gfortran_transpose_c10;
-    _gfortran_transpose_c16;
-    _gfortran_transpose_c4;
-    _gfortran_transpose_c8;
-    _gfortran_transpose_char;
-    _gfortran_transpose_i16;
-    _gfortran_transpose_i4;
-    _gfortran_transpose_i8;
-    _gfortran_transpose_r10;
-    _gfortran_transpose_r16;
-    _gfortran_transpose_r4;
-    _gfortran_transpose_r8;
     _gfortran_ttynam;
     _gfortran_ttynam_sub;
     _gfortran_umask_i4;
@@ -1088,7 +1048,6 @@ GFORTRAN_1.1 {
     _gfortran_string_verify_char4;
     _gfortran_st_wait;
     _gfortran_transfer_character_wide;
-    _gfortran_transpose_char4;
     _gfortran_unpack0_char4;
     _gfortran_unpack1_char4;
 } GFORTRAN_1.0;
diff --git a/libgfortran/intrinsics/malloc.c b/libgfortran/intrinsics/malloc.c
deleted file mode 100644
index 2d22c8d..0000000
--- a/libgfortran/intrinsics/malloc.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the MALLOC and FREE intrinsics
-   Copyright (C) 2005-2016 Free Software Foundation, Inc.
-   Contributed by François-Xavier Coudert <coudert@clipper.ens.fr>
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-
-
-/* The runtime MALLOC and FREE are kept here until the libgfortran ABI
-   is broken.  The front-end now emits direct calls to the GCC's malloc()
-   and free() built-ins.  */
-
-extern void PREFIX(free) (void **);
-export_proto_np(PREFIX(free));
-
-void
-PREFIX(free) (void ** ptr)
-{
-  free (*ptr);
-}
-
-
-extern void * PREFIX(malloc) (size_t *);
-export_proto_np(PREFIX(malloc));
-
-void *
-PREFIX(malloc) (size_t * size)
-{
-  return malloc (*size);
-}
diff --git a/libgfortran/intrinsics/transpose_generic.c b/libgfortran/intrinsics/transpose_generic.c
deleted file mode 100644
index 5c623cc..0000000
--- a/libgfortran/intrinsics/transpose_generic.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-extern void transpose (gfc_array_char *, gfc_array_char *);
-export_proto(transpose);
-
-static void
-transpose_internal (gfc_array_char *ret, gfc_array_char *source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  char *rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const char *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-  index_type size;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2
-          && GFC_DESCRIPTOR_RANK (ret) == 2);
-
-  size = GFC_DESCRIPTOR_SIZE(ret);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t*)ret), size);
-      ret->offset = 0;
-    }
-  else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE_BYTES(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE_BYTES(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE_BYTES(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE_BYTES(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y = 0; y < ycount; y++)
-    {
-      for (x = 0; x < xcount; x++)
-        {
-          memcpy (rptr, sptr, size);
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-      sptr += systride - (sxstride * xcount);
-      rptr += rxstride - (rystride * xcount);
-    }
-}
-
-
-extern void transpose (gfc_array_char *, gfc_array_char *);
-export_proto(transpose);
-
-void
-transpose (gfc_array_char *ret, gfc_array_char *source)
-{
-  transpose_internal (ret, source);
-}
-
-
-extern void transpose_char (gfc_array_char *, GFC_INTEGER_4,
-			    gfc_array_char *, GFC_INTEGER_4);
-export_proto(transpose_char);
-
-void
-transpose_char (gfc_array_char *ret,
-		GFC_INTEGER_4 ret_length __attribute__((unused)),
-		gfc_array_char *source,
-		GFC_INTEGER_4 source_length __attribute__((unused)))
-{
-  transpose_internal (ret, source);
-}
-
-
-extern void transpose_char4 (gfc_array_char *, GFC_INTEGER_4,
-			     gfc_array_char *, GFC_INTEGER_4);
-export_proto(transpose_char4);
-
-void
-transpose_char4 (gfc_array_char *ret,
-		 GFC_INTEGER_4 ret_length __attribute__((unused)),
-		 gfc_array_char *source,
-		 GFC_INTEGER_4 source_length __attribute__((unused)))
-{
-  transpose_internal (ret, source);
-}
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index b9f2471..098e4dc 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -650,9 +650,6 @@ iexport_proto(set_args);
 extern void get_args (int *, char ***);
 internal_proto(get_args);
 
-extern void store_exe_path (const char *);
-export_proto(store_exe_path);
-
 /* backtrace.c */
 
 extern void show_backtrace (bool);
diff --git a/libgfortran/m4/exponent.m4 b/libgfortran/m4/exponent.m4
deleted file mode 100644
index ebadf21..0000000
--- a/libgfortran/m4/exponent.m4
+++ /dev/null
@@ -1,45 +0,0 @@
-`/* Implementation of the EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"'
-
-include(`mtype.m4')dnl
-
-mathfunc_macro
-
-`#if defined (HAVE_'real_type`) && 'hasmathfunc(frexp)`
-
-extern GFC_INTEGER_4 exponent_r'kind` ('real_type` s);
-export_proto(exponent_r'kind`);
-
-GFC_INTEGER_4
-exponent_r'kind` ('real_type` s)
-{
-  int ret;
-  MATHFUNC(frexp) (s, &ret);
-  return ret;
-}
-
-#endif'
diff --git a/libgfortran/m4/fraction.m4 b/libgfortran/m4/fraction.m4
deleted file mode 100644
index a228ca0..0000000
--- a/libgfortran/m4/fraction.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-`/* Implementation of the FRACTION intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"'
-
-include(`mtype.m4')dnl
-
-mathfunc_macro
-
-`#if defined (HAVE_'real_type`) && 'hasmathfunc(frexp)`
-
-extern 'real_type` fraction_r'kind` ('real_type` s);
-export_proto(fraction_r'kind`);
-
-'real_type`
-fraction_r'kind` ('real_type` s)
-{
-  int dummy_exp;
-  return MATHFUNC(frexp) (s, &dummy_exp);
-}
-
-#endif'
diff --git a/libgfortran/m4/nearest.m4 b/libgfortran/m4/nearest.m4
deleted file mode 100644
index e4ab9f3..0000000
--- a/libgfortran/m4/nearest.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-`/* Implementation of the NEAREST intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"'
-
-include(`mtype.m4')dnl
-
-mathfunc_macro
-
-`#if defined (HAVE_'real_type`) && 'hasmathfunc(copysign) && hasmathfunc(nextafter)`
-
-extern 'real_type` nearest_r'kind` ('real_type` s, 'real_type` dir);
-export_proto(nearest_r'kind`);
-
-'real_type`
-nearest_r'kind` ('real_type` s, 'real_type` dir)
-{
-  dir = MATHFUNC(copysign) (MATHFUNC(__builtin_inf) (), dir);
-  if (FLT_EVAL_METHOD != 0)
-    {
-      /* ??? Work around glibc bug on x86.  */
-      volatile 'real_type` r = MATHFUNC(nextafter) (s, dir);
-      return r;
-    }
-  else
-    return MATHFUNC(nextafter) (s, dir);
-}
-
-#endif'
diff --git a/libgfortran/m4/rrspacing.m4 b/libgfortran/m4/rrspacing.m4
deleted file mode 100644
index 7d12327..0000000
--- a/libgfortran/m4/rrspacing.m4
+++ /dev/null
@@ -1,54 +0,0 @@
-`/* Implementation of the RRSPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"'
-
-include(`mtype.m4')dnl
-
-mathfunc_macro
-
-`#if defined (HAVE_'real_type`) && 'hasmathfunc(fabs) && hasmathfunc(frexp)`
-
-extern 'real_type` rrspacing_r'kind` ('real_type` s, int p);
-export_proto(rrspacing_r'kind`);
-
-'real_type`
-rrspacing_r'kind` ('real_type` s, int p)
-{
-  int e;
-  'real_type` x;
-  x = MATHFUNC(fabs) (s);
-  if (x == 0.)
-    return 0.;
-  MATHFUNC(frexp) (s, &e);
-#if 'hasmathfunc(ldexp)`
-  return MATHFUNC(ldexp) (x, p - e);
-#else
-  return MATHFUNC(scalbn) (x, p - e);
-#endif
-
-}
-
-#endif'
diff --git a/libgfortran/m4/set_exponent.m4 b/libgfortran/m4/set_exponent.m4
deleted file mode 100644
index e21b8b7..0000000
--- a/libgfortran/m4/set_exponent.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-`/* Implementation of the SET_EXPONENT intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"'
-
-include(`mtype.m4')dnl
-
-mathfunc_macro
-
-`#if defined (HAVE_'real_type`) && 'hasmathfunc(scalbn) && hasmathfunc(frexp)`
-
-extern 'real_type` set_exponent_r'kind` ('real_type` s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r'kind`);
-
-'real_type`
-set_exponent_r'kind` ('real_type` s, GFC_INTEGER_4 i)
-{
-  int dummy_exp;
-  return MATHFUNC(scalbn) (MATHFUNC(frexp) (s, &dummy_exp), i);
-}
-
-#endif'
diff --git a/libgfortran/m4/spacing.m4 b/libgfortran/m4/spacing.m4
deleted file mode 100644
index 6c2aa6f..0000000
--- a/libgfortran/m4/spacing.m4
+++ /dev/null
@@ -1,53 +0,0 @@
-`/* Implementation of the SPACING intrinsic
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"'
-
-include(`mtype.m4')dnl
-
-mathfunc_macro
-
-`#if defined (HAVE_'real_type`) && 'hasmathfunc(frexp)`
-
-extern 'real_type` spacing_r'kind` ('real_type` s, int p, int emin, 'real_type` tiny);
-export_proto(spacing_r'kind`);
-
-'real_type`
-spacing_r'kind` ('real_type` s, int p, int emin, 'real_type` tiny)
-{
-  int e;
-  if (s == 0.)
-    return tiny;
-  MATHFUNC(frexp) (s, &e);
-  e = e - p;
-  e = e > emin ? e : emin;
-#if 'hasmathfunc(ldexp)`
-  return MATHFUNC(ldexp) (1., e);
-#else
-  return MATHFUNC(scalbn) (1., e);
-#endif
-}
-
-#endif'
diff --git a/libgfortran/m4/transpose.m4 b/libgfortran/m4/transpose.m4
deleted file mode 100644
index 04a7ca4..0000000
--- a/libgfortran/m4/transpose.m4
+++ /dev/null
@@ -1,116 +0,0 @@
-`/* Implementation of the TRANSPOSE intrinsic
-   Copyright (C) 2003-2016 Free Software Foundation, Inc.
-   Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include "libgfortran.h"
-#include <assert.h>'
-
-include(iparm.m4)dnl
-
-`#if defined (HAVE_'rtype_name`)
-
-extern void transpose_'rtype_code` ('rtype` * const restrict ret, 
-	'rtype` * const restrict source);
-export_proto(transpose_'rtype_code`);
-
-void
-transpose_'rtype_code` ('rtype` * const restrict ret, 
-	'rtype` * const restrict source)
-{
-  /* r.* indicates the return array.  */
-  index_type rxstride, rystride;
-  'rtype_name` * restrict rptr;
-  /* s.* indicates the source array.  */
-  index_type sxstride, systride;
-  const 'rtype_name` *sptr;
-
-  index_type xcount, ycount;
-  index_type x, y;
-
-  assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
-  if (ret->base_addr == NULL)
-    {
-      assert (GFC_DESCRIPTOR_RANK (ret) == 2);
-      assert (ret->dtype == source->dtype);
-
-      GFC_DIMENSION_SET(ret->dim[0], 0, GFC_DESCRIPTOR_EXTENT(source,1) - 1,
-			1);
-
-      GFC_DIMENSION_SET(ret->dim[1], 0, GFC_DESCRIPTOR_EXTENT(source,0) - 1,
-			GFC_DESCRIPTOR_EXTENT(source, 1));
-
-      ret->base_addr = xmallocarray (size0 ((array_t *) ret), 
-                                     sizeof ('rtype_name`));
-      ret->offset = 0;
-    } else if (unlikely (compile_options.bounds_check))
-    {
-      index_type ret_extent, src_extent;
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,0);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,1);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 1: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-      ret_extent = GFC_DESCRIPTOR_EXTENT(ret,1);
-      src_extent = GFC_DESCRIPTOR_EXTENT(source,0);
-
-      if (src_extent != ret_extent)
-	runtime_error ("Incorrect extent in return value of TRANSPOSE"
-		       " intrinsic in dimension 2: is %ld,"
-		       " should be %ld", (long int) src_extent,
-		       (long int) ret_extent);
-
-    }
-
-  sxstride = GFC_DESCRIPTOR_STRIDE(source,0);
-  systride = GFC_DESCRIPTOR_STRIDE(source,1);
-  xcount = GFC_DESCRIPTOR_EXTENT(source,0);
-  ycount = GFC_DESCRIPTOR_EXTENT(source,1);
-
-  rxstride = GFC_DESCRIPTOR_STRIDE(ret,0);
-  rystride = GFC_DESCRIPTOR_STRIDE(ret,1);
-
-  rptr = ret->base_addr;
-  sptr = source->base_addr;
-
-  for (y=0; y < ycount; y++)
-    {
-      for (x=0; x < xcount; x++)
-        {
-          *rptr = *sptr;
-
-          sptr += sxstride;
-          rptr += rystride;
-        }
-        sptr += systride - (sxstride * xcount);
-        rptr += rxstride - (rystride * xcount);
-    }
-}
-
-#endif'
diff --git a/libgfortran/runtime/main.c b/libgfortran/runtime/main.c
index 09b89bc..c27a701 100644
--- a/libgfortran/runtime/main.c
+++ b/libgfortran/runtime/main.c
@@ -71,15 +71,6 @@ static int argc_save;
 static char **argv_save;
 
 
-void
-store_exe_path (const char * argv0 __attribute__ ((unused)))
-{
-  /* This function is now useless, but is retained due to ABI compatibility.
-    Remove when bumping the library ABI.  */
-  ;
-}
-
-
 /* Set the saved values of the command line arguments.  */
 
 void
-- 
2.7.4

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-16 13:01 [PATCH] Remove unused libgfortran functions Janne Blomqvist
@ 2016-12-16 14:03 ` FX
  2016-12-16 17:46   ` Janne Blomqvist
  2016-12-19 14:48 ` FX
  1 sibling, 1 reply; 13+ messages in thread
From: FX @ 2016-12-16 14:03 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: fortran, gcc-patches

A few questions:

  1. Regarding gfortran.map, shouldn’t we just flatten out all the symbols from GFORTRAN_1.0 to GFORTRAN_1.7 into a single new GFORTRAN_2.0 group (while removing the ones we are getting rid of)?

  2. While we are breaking the ABI, shouldn’t we reorder the array argument to the libgfortran_set_options to remove unused fields?

  3. What will happen to people who try to run older compiled codes with newer library versions? Will it fail with an error message? Segfault? Do we have a way to make it fail in a better way?

Cheers,
FX

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-16 14:03 ` FX
@ 2016-12-16 17:46   ` Janne Blomqvist
  2016-12-16 18:52     ` Steve Kargl
  2016-12-19 11:44     ` FX
  0 siblings, 2 replies; 13+ messages in thread
From: Janne Blomqvist @ 2016-12-16 17:46 UTC (permalink / raw)
  To: FX; +Cc: Fortran List, GCC Patches

On Fri, Dec 16, 2016 at 4:02 PM, FX <fxcoudert@gmail.com> wrote:
> A few questions:
>
>   1. Regarding gfortran.map, shouldn’t we just flatten out all the symbols from GFORTRAN_1.0 to GFORTRAN_1.7 into a single new GFORTRAN_2.0 group (while removing the ones we are getting rid of)?

Yes, I agree (in general, though I was thinking of making the new one
"GFORTRAN_7" to match the release series). There's also other things,
like e.g. ISO_C_BINDING helper functions living under the
__iso_c_binding namespace, instead of under _gfortran like everything
else. And while we're at it, should we place everything under
"__gfortran" or "_GFortran", that is, with two underscores or one
underscore followed by a capital letter which in the C world is
reserved for the implementation? Though it's not clear to me whether
libgfortran can claim to be part of "the implementation" vs. being
generic user code.

>   2. While we are breaking the ABI, shouldn’t we reorder the array argument to the libgfortran_set_options to remove unused fields?

Hmm, yes, probably. Can you add it to the libgfortranAbiCleanup page
on the wiki. Or better yet, get cracking, there's a lot to do.. ;-/

>   3. What will happen to people who try to run older compiled codes with newer library versions? Will it fail with an error message? Segfault? Do we have a way to make it fail in a better way?

It won't work, since old binaries are linked against libgfortran.so.3,
and GFortran 7 will provide libgfortran.so.4. But of course, you can
have both the so.3 and so.4 installed in parallel. The problem occurs,
say, when you have lib A that links against so.3 and lib B that links
against so.4, and your application wants to use both. In particular if
one or both of libs A and B are proprietary libs and you can't
recompile them against the same so version.. But also for the free
software world, these rebuild the world transitions tend to be
painful, which is why we have been so careful to not needlessly break
the ABI. But now it seems we'll have such an ABI transition both for
GCC 7 and 8, but that's another story.. :(



-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-16 17:46   ` Janne Blomqvist
@ 2016-12-16 18:52     ` Steve Kargl
  2016-12-19 11:44     ` FX
  1 sibling, 0 replies; 13+ messages in thread
From: Steve Kargl @ 2016-12-16 18:52 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: FX, Fortran List, GCC Patches

On Fri, Dec 16, 2016 at 07:46:01PM +0200, Janne Blomqvist wrote:
> On Fri, Dec 16, 2016 at 4:02 PM, FX <fxcoudert@gmail.com> wrote:
> > A few questions:
> >
> >   1. Regarding gfortran.map, shouldn’t we just flatten out all the symbols from GFORTRAN_1.0 to GFORTRAN_1.7 into a single new GFORTRAN_2.0 group (while removing the ones we are getting rid of)?
> 
> Yes, I agree (in general, though I was thinking of making the new one
> "GFORTRAN_7" to match the release series). There's also other things,
> like e.g. ISO_C_BINDING helper functions living under the
> __iso_c_binding namespace, instead of under _gfortran like everything
> else. And while we're at it, should we place everything under
> "__gfortran" or "_GFortran", that is, with two underscores or one
> underscore followed by a capital letter which in the C world is
> reserved for the implementation? Though it's not clear to me whether
> libgfortran can claim to be part of "the implementation" vs. being
> generic user code.

That's an interessting question.  All of the intrinsic subprogams
in Section 13 of the standard are required by the implementation.
This suggests that _GFortran should be used.  The Fortran standard
does allow a processor to supply additional intrinsic subprograms
beyond those in Section 13 (e.g., all of the g77 compatibility
routines).  I think we should simply use the same prefix.  I'll
leave the choice to whoever does the work. :-)

-- 
Steve

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-16 17:46   ` Janne Blomqvist
  2016-12-16 18:52     ` Steve Kargl
@ 2016-12-19 11:44     ` FX
  2016-12-19 16:15       ` Janne Blomqvist
  1 sibling, 1 reply; 13+ messages in thread
From: FX @ 2016-12-19 11:44 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Fortran List, GCC Patches

> Yes, I agree (in general, though I was thinking of making the new one
> "GFORTRAN_7" to match the release series).

Given that there will not be a 1-to-1 mapping of release series with major ABI versions (hopefully!), I don’t think this is a good idea. It will make people confused.


> There's also other things,
> like e.g. ISO_C_BINDING helper functions living under the
> __iso_c_binding namespace, instead of under _gfortran like everything
> else.

Agreed.

> And while we're at it, should we place everything under
> "__gfortran" or "_GFortran", that is, with two underscores or one
> underscore followed by a capital letter which in the C world is
> reserved for the implementation? Though it's not clear to me whether
> libgfortran can claim to be part of "the implementation" vs. being
> generic user code.

Another issue is that we have some documented, user-callable functions that currently live in the __gfortran_ “namespace”, e.g. the mixed-language routines (https://gcc.gnu.org/onlinedocs/gfortran/Non-Fortran-Main-Program.html). We want to avoid changing those for no reason, and so for consistency I think we should keep everything under __gfortran_ 


FX

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-16 13:01 [PATCH] Remove unused libgfortran functions Janne Blomqvist
  2016-12-16 14:03 ` FX
@ 2016-12-19 14:48 ` FX
  2016-12-19 15:35   ` Janne Blomqvist
  1 sibling, 1 reply; 13+ messages in thread
From: FX @ 2016-12-19 14:48 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: fortran, gcc-patches

> Now that the libgfortran ABI major version has been bumped, we can
> remove functions for which the frontend nowadays generates inline
> code.
> 
> This removes the malloc, free, exponent, fraction, nearest, rrspacing,
> spacing, set_exponent and transpose intrinsics. Also the unused
> store_exe_path function is removed.
> 
> Regtested on x86_64-pc-linux-gnu, Ok for trunk?

I’m okaying the patch as is. While we continue cleaning up the library (I have submitted a number of patches now) we should discuss how we will arrange the symbols in gfortran.map at the end.

FX

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-19 14:48 ` FX
@ 2016-12-19 15:35   ` Janne Blomqvist
  2016-12-19 16:18     ` FX
  0 siblings, 1 reply; 13+ messages in thread
From: Janne Blomqvist @ 2016-12-19 15:35 UTC (permalink / raw)
  To: FX; +Cc: Fortran List, GCC Patches

On Mon, Dec 19, 2016 at 4:44 PM, FX <fxcoudert@gmail.com> wrote:
>> Now that the libgfortran ABI major version has been bumped, we can
>> remove functions for which the frontend nowadays generates inline
>> code.
>>
>> This removes the malloc, free, exponent, fraction, nearest, rrspacing,
>> spacing, set_exponent and transpose intrinsics. Also the unused
>> store_exe_path function is removed.
>>
>> Regtested on x86_64-pc-linux-gnu, Ok for trunk?
>
> I’m okaying the patch as is. While we continue cleaning up the library (I have submitted a number of patches now) we should discuss how we will arrange the symbols in gfortran.map at the end.

Thanks, committed as r243799.


-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-19 11:44     ` FX
@ 2016-12-19 16:15       ` Janne Blomqvist
  2016-12-20  9:34         ` FX
  0 siblings, 1 reply; 13+ messages in thread
From: Janne Blomqvist @ 2016-12-19 16:15 UTC (permalink / raw)
  To: FX; +Cc: Fortran List, GCC Patches

On Mon, Dec 19, 2016 at 12:59 PM, FX <fxcoudert@gmail.com> wrote:
>> Yes, I agree (in general, though I was thinking of making the new one
>> "GFORTRAN_7" to match the release series).
>
> Given that there will not be a 1-to-1 mapping of release series with major ABI versions (hopefully!), I don’t think this is a good idea. It will make people confused.

I don't understand. Why would it imply a 1:1 mapping of release series
with major ABI versions?

Say we release GCC 7 providing libgfortran.so.4 (that is, major
version 4) and gfortran.map has the symbols under the GFORTRAN_7 node.
Later on we release GCC 8 and new library symbols there would have the
GFORTRAN_8 node while keeping the GFORTRAN_7 node for existing symbols
that are backwards compatible. Just like we currently have with
GFORTRAN_1.0, 1.1, etc. (remember that the nodes in .map files are
arbitrary identifiers, the number have no meaning per se).

Then if a user has some code compiled against GCC 8 and tries to run
the binary on a system providing only libgfortran from GCC 7, the user
will get an error message that symbol node GFORTRAN_8 is not found.
IMHO that error message is clearer than an error message saying that
GFORTRAN_2.0 not found (to which the user replies, but I have GFortran
8 which is bigger than 2.0, WTF?? And yes, I've seen exactly this
happen).

>> There's also other things,
>> like e.g. ISO_C_BINDING helper functions living under the
>> __iso_c_binding namespace, instead of under _gfortran like everything
>> else.
>
> Agreed.

Which seems to be a moot point, since you just removed all those
symbols entirely. :)

>> And while we're at it, should we place everything under
>> "__gfortran" or "_GFortran", that is, with two underscores or one
>> underscore followed by a capital letter which in the C world is
>> reserved for the implementation? Though it's not clear to me whether
>> libgfortran can claim to be part of "the implementation" vs. being
>> generic user code.
>
> Another issue is that we have some documented, user-callable functions that currently live in the __gfortran_ “namespace”, e.g. the mixed-language routines (https://gcc.gnu.org/onlinedocs/gfortran/Non-Fortran-Main-Program.html). We want to avoid changing those for no reason, and so for consistency I think we should keep everything under __gfortran_

Currently we have _gfortran_, that is with a single underscore in the
beginning, so it's not in the "C/POSIX reserved for the implementation
namespace". But yes, I agree that at least those functions documented
under the non-Fortran main program section in the manual should be
kept as is.


-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-19 15:35   ` Janne Blomqvist
@ 2016-12-19 16:18     ` FX
  2016-12-19 16:32       ` Janne Blomqvist
  0 siblings, 1 reply; 13+ messages in thread
From: FX @ 2016-12-19 16:18 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Fortran List, GCC Patches

> Thanks, committed as r243799.

I think something went wrong in your commit, as none of the “removed” files were removed: https://gcc.gnu.org/viewvc/gcc?view=revision&revision=243799

FX

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-19 16:18     ` FX
@ 2016-12-19 16:32       ` Janne Blomqvist
  0 siblings, 0 replies; 13+ messages in thread
From: Janne Blomqvist @ 2016-12-19 16:32 UTC (permalink / raw)
  To: FX; +Cc: Fortran List, GCC Patches

On Mon, Dec 19, 2016 at 6:15 PM, FX <fxcoudert@gmail.com> wrote:
>> Thanks, committed as r243799.
>
> I think something went wrong in your commit, as none of the “removed” files were removed: https://gcc.gnu.org/viewvc/gcc?view=revision&revision=243799

Indeed, thanks for bringing it up. Fixed by r243804.


-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-19 16:15       ` Janne Blomqvist
@ 2016-12-20  9:34         ` FX
  2016-12-21  8:28           ` Janne Blomqvist
  0 siblings, 1 reply; 13+ messages in thread
From: FX @ 2016-12-20  9:34 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Fortran List, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 825 bytes --]

> I don't understand. Why would it imply a 1:1 mapping of release series
> with major ABI versions?

OK, I thought you meant to map libgfortran version numbers (libgfortran.so.7 with GCC 7). If it’s the gfortran.map node names, I’m happy with that indeed. 

Attached patch regtested on x86_64-apple-darwin16.3.0.
OK to commit?


> Currently we have _gfortran_, that is with a single underscore in the
> beginning, so it's not in the "C/POSIX reserved for the implementation
> namespace". But yes, I agree that at least those functions documented
> under the non-Fortran main program section in the manual should be
> kept as is.

Then, if we keep some functions under _gfortran_, I say let’s keep them all there. It’s not hurting, and the few users who care have come to expect it.


Cheers,
FX


[-- Attachment #2: map.ChangeLog --]
[-- Type: application/octet-stream, Size: 232 bytes --]

2016-12-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* gfortran.map: Move all _gfortran_* __iso_c_binding_* symbols
	to GFORTRAN_7. Rename F2C_1.0 to GFORTRAN_F2C_7. Move all C99
	compatibility symbols to GFORTRAN_C99_7.


[-- Attachment #3: map.diff --]
[-- Type: application/octet-stream, Size: 44448 bytes --]

Index: gfortran.map
===================================================================
--- gfortran.map	(revision 243803)
+++ gfortran.map	(working copy)
@@ -1,20 +1,103 @@
-GFORTRAN_1.0 {
+GFORTRAN_7 {
   global:
+    __ieee_arithmetic_MOD_ieee_class_10;
+    __ieee_arithmetic_MOD_ieee_class_16;
+    __ieee_arithmetic_MOD_ieee_class_4;
+    __ieee_arithmetic_MOD_ieee_class_8;
+    __ieee_arithmetic_MOD_ieee_class_type_eq;
+    __ieee_arithmetic_MOD_ieee_class_type_ne;
+    __ieee_arithmetic_MOD_ieee_get_rounding_mode;
+    __ieee_arithmetic_MOD_ieee_get_underflow_mode;
+    __ieee_arithmetic_MOD_ieee_round_type_eq;
+    __ieee_arithmetic_MOD_ieee_round_type_ne;
+    __ieee_arithmetic_MOD_ieee_selected_real_kind;
+    __ieee_arithmetic_MOD_ieee_set_rounding_mode;
+    __ieee_arithmetic_MOD_ieee_set_underflow_mode;
+    __ieee_arithmetic_MOD_ieee_support_datatype_10;
+    __ieee_arithmetic_MOD_ieee_support_datatype_16;
+    __ieee_arithmetic_MOD_ieee_support_datatype_4;
+    __ieee_arithmetic_MOD_ieee_support_datatype_8;
+    __ieee_arithmetic_MOD_ieee_support_datatype_noarg;
+    __ieee_arithmetic_MOD_ieee_support_denormal_10;
+    __ieee_arithmetic_MOD_ieee_support_denormal_16;
+    __ieee_arithmetic_MOD_ieee_support_denormal_4;
+    __ieee_arithmetic_MOD_ieee_support_denormal_8;
+    __ieee_arithmetic_MOD_ieee_support_denormal_noarg;
+    __ieee_arithmetic_MOD_ieee_support_divide_10;
+    __ieee_arithmetic_MOD_ieee_support_divide_16;
+    __ieee_arithmetic_MOD_ieee_support_divide_4;
+    __ieee_arithmetic_MOD_ieee_support_divide_8;
+    __ieee_arithmetic_MOD_ieee_support_divide_noarg;
+    __ieee_arithmetic_MOD_ieee_support_inf_10;
+    __ieee_arithmetic_MOD_ieee_support_inf_16;
+    __ieee_arithmetic_MOD_ieee_support_inf_4;
+    __ieee_arithmetic_MOD_ieee_support_inf_8;
+    __ieee_arithmetic_MOD_ieee_support_inf_noarg;
+    __ieee_arithmetic_MOD_ieee_support_io_10;
+    __ieee_arithmetic_MOD_ieee_support_io_16;
+    __ieee_arithmetic_MOD_ieee_support_io_4;
+    __ieee_arithmetic_MOD_ieee_support_io_8;
+    __ieee_arithmetic_MOD_ieee_support_io_noarg;
+    __ieee_arithmetic_MOD_ieee_support_nan_10;
+    __ieee_arithmetic_MOD_ieee_support_nan_16;
+    __ieee_arithmetic_MOD_ieee_support_nan_4;
+    __ieee_arithmetic_MOD_ieee_support_nan_8;
+    __ieee_arithmetic_MOD_ieee_support_nan_noarg;
+    __ieee_arithmetic_MOD_ieee_support_rounding_10;
+    __ieee_arithmetic_MOD_ieee_support_rounding_16;
+    __ieee_arithmetic_MOD_ieee_support_rounding_4;
+    __ieee_arithmetic_MOD_ieee_support_rounding_8;
+    __ieee_arithmetic_MOD_ieee_support_rounding_noarg;
+    __ieee_arithmetic_MOD_ieee_support_sqrt_10;
+    __ieee_arithmetic_MOD_ieee_support_sqrt_16;
+    __ieee_arithmetic_MOD_ieee_support_sqrt_4;
+    __ieee_arithmetic_MOD_ieee_support_sqrt_8;
+    __ieee_arithmetic_MOD_ieee_support_sqrt_noarg;
+    __ieee_arithmetic_MOD_ieee_support_standard_10;
+    __ieee_arithmetic_MOD_ieee_support_standard_16;
+    __ieee_arithmetic_MOD_ieee_support_standard_4;
+    __ieee_arithmetic_MOD_ieee_support_standard_8;
+    __ieee_arithmetic_MOD_ieee_support_standard_noarg;
+    __ieee_arithmetic_MOD_ieee_support_underflow_control_10;
+    __ieee_arithmetic_MOD_ieee_support_underflow_control_16;
+    __ieee_arithmetic_MOD_ieee_support_underflow_control_4;
+    __ieee_arithmetic_MOD_ieee_support_underflow_control_8;
+    __ieee_arithmetic_MOD_ieee_support_underflow_control_noarg;
+    __ieee_arithmetic_MOD_ieee_value_10;
+    __ieee_arithmetic_MOD_ieee_value_16;
+    __ieee_arithmetic_MOD_ieee_value_4;
+    __ieee_arithmetic_MOD_ieee_value_8;
+    __ieee_exceptions_MOD_ieee_all;
+    __ieee_exceptions_MOD_ieee_get_flag;
+    __ieee_exceptions_MOD_ieee_get_halting_mode;
+    __ieee_exceptions_MOD_ieee_get_status;
+    __ieee_exceptions_MOD_ieee_set_flag;
+    __ieee_exceptions_MOD_ieee_set_halting_mode;
+    __ieee_exceptions_MOD_ieee_set_status;
+    __ieee_exceptions_MOD_ieee_support_flag_10;
+    __ieee_exceptions_MOD_ieee_support_flag_16;
+    __ieee_exceptions_MOD_ieee_support_flag_4;
+    __ieee_exceptions_MOD_ieee_support_flag_8;
+    __ieee_exceptions_MOD_ieee_support_flag_noarg;
+    __ieee_exceptions_MOD_ieee_support_halting;
+    __ieee_exceptions_MOD_ieee_usual;
     _gfortran_abort;
     _gfortran_access_func;
     _gfortran_adjustl;
+    _gfortran_adjustl_char4;
     _gfortran_adjustr;
+    _gfortran_adjustr_char4;
     _gfortran_alarm_sub_i4;
     _gfortran_alarm_sub_i8;
     _gfortran_alarm_sub_int_i4;
     _gfortran_alarm_sub_int_i8;
-    _gfortran_all_l1;
     _gfortran_all_l16;
+    _gfortran_all_l1;
     _gfortran_all_l2;
     _gfortran_all_l4;
     _gfortran_all_l8;
-    _gfortran_any_l1;
     _gfortran_any_l16;
+    _gfortran_any_l1;
     _gfortran_any_l2;
     _gfortran_any_l4;
     _gfortran_any_l8;
@@ -23,6 +106,15 @@ GFORTRAN_1.0 {
     _gfortran_arandom_r4;
     _gfortran_arandom_r8;
     _gfortran_associated;
+    _gfortran_backtrace;
+    _gfortran_bessel_jn_r10;
+    _gfortran_bessel_jn_r16;
+    _gfortran_bessel_jn_r4;
+    _gfortran_bessel_jn_r8;
+    _gfortran_bessel_yn_r10;
+    _gfortran_bessel_yn_r16;
+    _gfortran_bessel_yn_r4;
+    _gfortran_bessel_yn_r8;
     _gfortran_chdir_i4;
     _gfortran_chdir_i4_sub;
     _gfortran_chdir_i8;
@@ -31,9 +123,13 @@ GFORTRAN_1.0 {
     _gfortran_chmod_i4_sub;
     _gfortran_chmod_i8_sub;
     _gfortran_compare_string;
+    _gfortran_compare_string_char4;
     _gfortran_concat_string;
-    _gfortran_count_1_l;
+    _gfortran_concat_string_char4;
+    _gfortran_convert_char1_to_char4;
+    _gfortran_convert_char4_to_char1;
     _gfortran_count_16_l;
+    _gfortran_count_1_l;
     _gfortran_count_2_l;
     _gfortran_count_4_l;
     _gfortran_count_8_l;
@@ -41,88 +137,127 @@ GFORTRAN_1.0 {
     _gfortran_cpu_time_16;
     _gfortran_cpu_time_4;
     _gfortran_cpu_time_8;
+    _gfortran_cshift0_16;
+    _gfortran_cshift0_16_char4;
+    _gfortran_cshift0_16_char;
     _gfortran_cshift0_1;
+    _gfortran_cshift0_1_char4;
     _gfortran_cshift0_1_char;
     _gfortran_cshift0_2;
+    _gfortran_cshift0_2_char4;
     _gfortran_cshift0_2_char;
     _gfortran_cshift0_4;
+    _gfortran_cshift0_4_char4;
     _gfortran_cshift0_4_char;
     _gfortran_cshift0_8;
+    _gfortran_cshift0_8_char4;
     _gfortran_cshift0_8_char;
     _gfortran_cshift1_16;
+    _gfortran_cshift1_16_char4;
     _gfortran_cshift1_16_char;
     _gfortran_cshift1_4;
+    _gfortran_cshift1_4_char4;
     _gfortran_cshift1_4_char;
     _gfortran_cshift1_8;
+    _gfortran_cshift1_8_char4;
     _gfortran_cshift1_8_char;
     _gfortran_ctime;
     _gfortran_ctime_sub;
     _gfortran_date_and_time;
     _gfortran_dtime;
     _gfortran_dtime_sub;
+    _gfortran_eoshift0_16;
+    _gfortran_eoshift0_16_char4;
+    _gfortran_eoshift0_16_char;
     _gfortran_eoshift0_1;
+    _gfortran_eoshift0_1_char4;
     _gfortran_eoshift0_1_char;
     _gfortran_eoshift0_2;
+    _gfortran_eoshift0_2_char4;
     _gfortran_eoshift0_2_char;
     _gfortran_eoshift0_4;
+    _gfortran_eoshift0_4_char4;
     _gfortran_eoshift0_4_char;
     _gfortran_eoshift0_8;
+    _gfortran_eoshift0_8_char4;
     _gfortran_eoshift0_8_char;
     _gfortran_eoshift1_16;
+    _gfortran_eoshift1_16_char4;
     _gfortran_eoshift1_16_char;
     _gfortran_eoshift1_4;
+    _gfortran_eoshift1_4_char4;
     _gfortran_eoshift1_4_char;
     _gfortran_eoshift1_8;
+    _gfortran_eoshift1_8_char4;
     _gfortran_eoshift1_8_char;
+    _gfortran_eoshift2_16;
+    _gfortran_eoshift2_16_char4;
+    _gfortran_eoshift2_16_char;
     _gfortran_eoshift2_1;
+    _gfortran_eoshift2_1_char4;
     _gfortran_eoshift2_1_char;
     _gfortran_eoshift2_2;
+    _gfortran_eoshift2_2_char4;
     _gfortran_eoshift2_2_char;
     _gfortran_eoshift2_4;
+    _gfortran_eoshift2_4_char4;
     _gfortran_eoshift2_4_char;
     _gfortran_eoshift2_8;
+    _gfortran_eoshift2_8_char4;
     _gfortran_eoshift2_8_char;
     _gfortran_eoshift3_16;
+    _gfortran_eoshift3_16_char4;
     _gfortran_eoshift3_16_char;
     _gfortran_eoshift3_4;
+    _gfortran_eoshift3_4_char4;
     _gfortran_eoshift3_4_char;
     _gfortran_eoshift3_8;
+    _gfortran_eoshift3_8_char4;
     _gfortran_eoshift3_8_char;
+    _gfortran_erfc_scaled_r10;
+    _gfortran_erfc_scaled_r16;
+    _gfortran_erfc_scaled_r4;
+    _gfortran_erfc_scaled_r8;
+    _gfortran_error_stop_numeric;
+    _gfortran_error_stop_string;
     _gfortran_etime;
     _gfortran_etime_sub;
+    _gfortran_execute_command_line_i4;
+    _gfortran_execute_command_line_i8;
     _gfortran_exit_i4;
     _gfortran_exit_i8;
     _gfortran_fdate;
     _gfortran_fdate_sub;
     _gfortran_fget;
+    _gfortran_fget_i1_sub;
+    _gfortran_fget_i2_sub;
+    _gfortran_fget_i4_sub;
+    _gfortran_fget_i8_sub;
     _gfortran_fgetc;
     _gfortran_fgetc_i1_sub;
     _gfortran_fgetc_i2_sub;
     _gfortran_fgetc_i4_sub;
     _gfortran_fgetc_i8_sub;
-    _gfortran_fget_i1_sub;
-    _gfortran_fget_i2_sub;
-    _gfortran_fget_i4_sub;
-    _gfortran_fget_i8_sub;
     _gfortran_flush_i4;
     _gfortran_flush_i8;
     _gfortran_fnum_i4;
     _gfortran_fnum_i8;
     _gfortran_fput;
+    _gfortran_fput_i1_sub;
+    _gfortran_fput_i2_sub;
+    _gfortran_fput_i4_sub;
+    _gfortran_fput_i8_sub;
     _gfortran_fputc;
     _gfortran_fputc_i1_sub;
     _gfortran_fputc_i2_sub;
     _gfortran_fputc_i4_sub;
     _gfortran_fputc_i8_sub;
-    _gfortran_fput_i1_sub;
-    _gfortran_fput_i2_sub;
-    _gfortran_fput_i4_sub;
-    _gfortran_fput_i8_sub;
     _gfortran_fseek_sub;
     _gfortran_fstat_i4;
     _gfortran_fstat_i4_sub;
     _gfortran_fstat_i8;
     _gfortran_fstat_i8_sub;
+    _gfortran_ftell2;
     _gfortran_ftell;
     _gfortran_ftell_i1_sub;
     _gfortran_ftell_i2_sub;
@@ -130,18 +265,18 @@ GFORTRAN_1.0 {
     _gfortran_ftell_i8_sub;
     _gfortran_generate_error;
     _gfortran_gerror;
-    _gfortran_getarg_i4;
-    _gfortran_getarg_i8;
     _gfortran_get_command_argument_i4;
     _gfortran_get_command_argument_i8;
     _gfortran_get_command_i4;
     _gfortran_get_command_i8;
+    _gfortran_get_environment_variable_i4;
+    _gfortran_get_environment_variable_i8;
+    _gfortran_getarg_i4;
+    _gfortran_getarg_i8;
     _gfortran_getcwd;
     _gfortran_getcwd_i4_sub;
     _gfortran_getcwd_i8_sub;
     _gfortran_getenv;
-    _gfortran_get_environment_variable_i4;
-    _gfortran_get_environment_variable_i8;
     _gfortran_getgid;
     _gfortran_getlog;
     _gfortran_getpid;
@@ -151,14 +286,32 @@ GFORTRAN_1.0 {
     _gfortran_hostnm;
     _gfortran_hostnm_i4_sub;
     _gfortran_hostnm_i8_sub;
+    _gfortran_iall_i16;
+    _gfortran_iall_i1;
+    _gfortran_iall_i2;
+    _gfortran_iall_i4;
+    _gfortran_iall_i8;
+    _gfortran_iany_i16;
+    _gfortran_iany_i1;
+    _gfortran_iany_i2;
+    _gfortran_iany_i4;
+    _gfortran_iany_i8;
     _gfortran_iargc;
     _gfortran_idate_i4;
     _gfortran_idate_i8;
+    _gfortran_ieee_procedure_entry;
+    _gfortran_ieee_procedure_exit;
     _gfortran_ierrno_i4;
     _gfortran_ierrno_i8;
     _gfortran_internal_pack;
     _gfortran_internal_unpack;
+    _gfortran_iparity_i16;
+    _gfortran_iparity_i1;
+    _gfortran_iparity_i2;
+    _gfortran_iparity_i4;
+    _gfortran_iparity_i8;
     _gfortran_irand;
+    _gfortran_is_extension_of;
     _gfortran_isatty_l4;
     _gfortran_isatty_l8;
     _gfortran_ishftc16;
@@ -184,8 +337,8 @@ GFORTRAN_1.0 {
     _gfortran_matmul_c16;
     _gfortran_matmul_c4;
     _gfortran_matmul_c8;
-    _gfortran_matmul_i1;
     _gfortran_matmul_i16;
+    _gfortran_matmul_i1;
     _gfortran_matmul_i2;
     _gfortran_matmul_i4;
     _gfortran_matmul_i8;
@@ -196,8 +349,8 @@ GFORTRAN_1.0 {
     _gfortran_matmul_r16;
     _gfortran_matmul_r4;
     _gfortran_matmul_r8;
-    _gfortran_maxloc0_16_i1;
     _gfortran_maxloc0_16_i16;
+    _gfortran_maxloc0_16_i1;
     _gfortran_maxloc0_16_i2;
     _gfortran_maxloc0_16_i4;
     _gfortran_maxloc0_16_i8;
@@ -205,8 +358,8 @@ GFORTRAN_1.0 {
     _gfortran_maxloc0_16_r16;
     _gfortran_maxloc0_16_r4;
     _gfortran_maxloc0_16_r8;
-    _gfortran_maxloc0_4_i1;
     _gfortran_maxloc0_4_i16;
+    _gfortran_maxloc0_4_i1;
     _gfortran_maxloc0_4_i2;
     _gfortran_maxloc0_4_i4;
     _gfortran_maxloc0_4_i8;
@@ -214,8 +367,8 @@ GFORTRAN_1.0 {
     _gfortran_maxloc0_4_r16;
     _gfortran_maxloc0_4_r4;
     _gfortran_maxloc0_4_r8;
-    _gfortran_maxloc0_8_i1;
     _gfortran_maxloc0_8_i16;
+    _gfortran_maxloc0_8_i1;
     _gfortran_maxloc0_8_i2;
     _gfortran_maxloc0_8_i4;
     _gfortran_maxloc0_8_i8;
@@ -223,8 +376,8 @@ GFORTRAN_1.0 {
     _gfortran_maxloc0_8_r16;
     _gfortran_maxloc0_8_r4;
     _gfortran_maxloc0_8_r8;
-    _gfortran_maxloc1_16_i1;
     _gfortran_maxloc1_16_i16;
+    _gfortran_maxloc1_16_i1;
     _gfortran_maxloc1_16_i2;
     _gfortran_maxloc1_16_i4;
     _gfortran_maxloc1_16_i8;
@@ -232,8 +385,8 @@ GFORTRAN_1.0 {
     _gfortran_maxloc1_16_r16;
     _gfortran_maxloc1_16_r4;
     _gfortran_maxloc1_16_r8;
-    _gfortran_maxloc1_4_i1;
     _gfortran_maxloc1_4_i16;
+    _gfortran_maxloc1_4_i1;
     _gfortran_maxloc1_4_i2;
     _gfortran_maxloc1_4_i4;
     _gfortran_maxloc1_4_i8;
@@ -241,8 +394,8 @@ GFORTRAN_1.0 {
     _gfortran_maxloc1_4_r16;
     _gfortran_maxloc1_4_r4;
     _gfortran_maxloc1_4_r8;
-    _gfortran_maxloc1_8_i1;
     _gfortran_maxloc1_8_i16;
+    _gfortran_maxloc1_8_i1;
     _gfortran_maxloc1_8_i2;
     _gfortran_maxloc1_8_i4;
     _gfortran_maxloc1_8_i8;
@@ -250,8 +403,8 @@ GFORTRAN_1.0 {
     _gfortran_maxloc1_8_r16;
     _gfortran_maxloc1_8_r4;
     _gfortran_maxloc1_8_r8;
-    _gfortran_maxval_i1;
     _gfortran_maxval_i16;
+    _gfortran_maxval_i1;
     _gfortran_maxval_i2;
     _gfortran_maxval_i4;
     _gfortran_maxval_i8;
@@ -259,10 +412,20 @@ GFORTRAN_1.0 {
     _gfortran_maxval_r16;
     _gfortran_maxval_r4;
     _gfortran_maxval_r8;
-    _gfortran_mclock;
     _gfortran_mclock8;
-    _gfortran_minloc0_16_i1;
+    _gfortran_mclock;
+    _gfortran_miall_i16;
+    _gfortran_miall_i1;
+    _gfortran_miall_i2;
+    _gfortran_miall_i4;
+    _gfortran_miall_i8;
+    _gfortran_miany_i16;
+    _gfortran_miany_i1;
+    _gfortran_miany_i2;
+    _gfortran_miany_i4;
+    _gfortran_miany_i8;
     _gfortran_minloc0_16_i16;
+    _gfortran_minloc0_16_i1;
     _gfortran_minloc0_16_i2;
     _gfortran_minloc0_16_i4;
     _gfortran_minloc0_16_i8;
@@ -270,8 +433,8 @@ GFORTRAN_1.0 {
     _gfortran_minloc0_16_r16;
     _gfortran_minloc0_16_r4;
     _gfortran_minloc0_16_r8;
-    _gfortran_minloc0_4_i1;
     _gfortran_minloc0_4_i16;
+    _gfortran_minloc0_4_i1;
     _gfortran_minloc0_4_i2;
     _gfortran_minloc0_4_i4;
     _gfortran_minloc0_4_i8;
@@ -279,8 +442,8 @@ GFORTRAN_1.0 {
     _gfortran_minloc0_4_r16;
     _gfortran_minloc0_4_r4;
     _gfortran_minloc0_4_r8;
-    _gfortran_minloc0_8_i1;
     _gfortran_minloc0_8_i16;
+    _gfortran_minloc0_8_i1;
     _gfortran_minloc0_8_i2;
     _gfortran_minloc0_8_i4;
     _gfortran_minloc0_8_i8;
@@ -288,8 +451,8 @@ GFORTRAN_1.0 {
     _gfortran_minloc0_8_r16;
     _gfortran_minloc0_8_r4;
     _gfortran_minloc0_8_r8;
-    _gfortran_minloc1_16_i1;
     _gfortran_minloc1_16_i16;
+    _gfortran_minloc1_16_i1;
     _gfortran_minloc1_16_i2;
     _gfortran_minloc1_16_i4;
     _gfortran_minloc1_16_i8;
@@ -297,8 +460,8 @@ GFORTRAN_1.0 {
     _gfortran_minloc1_16_r16;
     _gfortran_minloc1_16_r4;
     _gfortran_minloc1_16_r8;
-    _gfortran_minloc1_4_i1;
     _gfortran_minloc1_4_i16;
+    _gfortran_minloc1_4_i1;
     _gfortran_minloc1_4_i2;
     _gfortran_minloc1_4_i4;
     _gfortran_minloc1_4_i8;
@@ -306,8 +469,8 @@ GFORTRAN_1.0 {
     _gfortran_minloc1_4_r16;
     _gfortran_minloc1_4_r4;
     _gfortran_minloc1_4_r8;
-    _gfortran_minloc1_8_i1;
     _gfortran_minloc1_8_i16;
+    _gfortran_minloc1_8_i1;
     _gfortran_minloc1_8_i2;
     _gfortran_minloc1_8_i4;
     _gfortran_minloc1_8_i8;
@@ -315,8 +478,8 @@ GFORTRAN_1.0 {
     _gfortran_minloc1_8_r16;
     _gfortran_minloc1_8_r4;
     _gfortran_minloc1_8_r8;
-    _gfortran_minval_i1;
     _gfortran_minval_i16;
+    _gfortran_minval_i1;
     _gfortran_minval_i2;
     _gfortran_minval_i4;
     _gfortran_minval_i8;
@@ -324,8 +487,13 @@ GFORTRAN_1.0 {
     _gfortran_minval_r16;
     _gfortran_minval_r4;
     _gfortran_minval_r8;
-    _gfortran_mmaxloc0_16_i1;
+    _gfortran_miparity_i16;
+    _gfortran_miparity_i1;
+    _gfortran_miparity_i2;
+    _gfortran_miparity_i4;
+    _gfortran_miparity_i8;
     _gfortran_mmaxloc0_16_i16;
+    _gfortran_mmaxloc0_16_i1;
     _gfortran_mmaxloc0_16_i2;
     _gfortran_mmaxloc0_16_i4;
     _gfortran_mmaxloc0_16_i8;
@@ -333,8 +501,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxloc0_16_r16;
     _gfortran_mmaxloc0_16_r4;
     _gfortran_mmaxloc0_16_r8;
-    _gfortran_mmaxloc0_4_i1;
     _gfortran_mmaxloc0_4_i16;
+    _gfortran_mmaxloc0_4_i1;
     _gfortran_mmaxloc0_4_i2;
     _gfortran_mmaxloc0_4_i4;
     _gfortran_mmaxloc0_4_i8;
@@ -342,8 +510,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxloc0_4_r16;
     _gfortran_mmaxloc0_4_r4;
     _gfortran_mmaxloc0_4_r8;
-    _gfortran_mmaxloc0_8_i1;
     _gfortran_mmaxloc0_8_i16;
+    _gfortran_mmaxloc0_8_i1;
     _gfortran_mmaxloc0_8_i2;
     _gfortran_mmaxloc0_8_i4;
     _gfortran_mmaxloc0_8_i8;
@@ -351,8 +519,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxloc0_8_r16;
     _gfortran_mmaxloc0_8_r4;
     _gfortran_mmaxloc0_8_r8;
-    _gfortran_mmaxloc1_16_i1;
     _gfortran_mmaxloc1_16_i16;
+    _gfortran_mmaxloc1_16_i1;
     _gfortran_mmaxloc1_16_i2;
     _gfortran_mmaxloc1_16_i4;
     _gfortran_mmaxloc1_16_i8;
@@ -360,8 +528,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxloc1_16_r16;
     _gfortran_mmaxloc1_16_r4;
     _gfortran_mmaxloc1_16_r8;
-    _gfortran_mmaxloc1_4_i1;
     _gfortran_mmaxloc1_4_i16;
+    _gfortran_mmaxloc1_4_i1;
     _gfortran_mmaxloc1_4_i2;
     _gfortran_mmaxloc1_4_i4;
     _gfortran_mmaxloc1_4_i8;
@@ -369,8 +537,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxloc1_4_r16;
     _gfortran_mmaxloc1_4_r4;
     _gfortran_mmaxloc1_4_r8;
-    _gfortran_mmaxloc1_8_i1;
     _gfortran_mmaxloc1_8_i16;
+    _gfortran_mmaxloc1_8_i1;
     _gfortran_mmaxloc1_8_i2;
     _gfortran_mmaxloc1_8_i4;
     _gfortran_mmaxloc1_8_i8;
@@ -378,8 +546,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxloc1_8_r16;
     _gfortran_mmaxloc1_8_r4;
     _gfortran_mmaxloc1_8_r8;
-    _gfortran_mmaxval_i1;
     _gfortran_mmaxval_i16;
+    _gfortran_mmaxval_i1;
     _gfortran_mmaxval_i2;
     _gfortran_mmaxval_i4;
     _gfortran_mmaxval_i8;
@@ -387,8 +555,8 @@ GFORTRAN_1.0 {
     _gfortran_mmaxval_r16;
     _gfortran_mmaxval_r4;
     _gfortran_mmaxval_r8;
-    _gfortran_mminloc0_16_i1;
     _gfortran_mminloc0_16_i16;
+    _gfortran_mminloc0_16_i1;
     _gfortran_mminloc0_16_i2;
     _gfortran_mminloc0_16_i4;
     _gfortran_mminloc0_16_i8;
@@ -396,8 +564,8 @@ GFORTRAN_1.0 {
     _gfortran_mminloc0_16_r16;
     _gfortran_mminloc0_16_r4;
     _gfortran_mminloc0_16_r8;
-    _gfortran_mminloc0_4_i1;
     _gfortran_mminloc0_4_i16;
+    _gfortran_mminloc0_4_i1;
     _gfortran_mminloc0_4_i2;
     _gfortran_mminloc0_4_i4;
     _gfortran_mminloc0_4_i8;
@@ -405,8 +573,8 @@ GFORTRAN_1.0 {
     _gfortran_mminloc0_4_r16;
     _gfortran_mminloc0_4_r4;
     _gfortran_mminloc0_4_r8;
-    _gfortran_mminloc0_8_i1;
     _gfortran_mminloc0_8_i16;
+    _gfortran_mminloc0_8_i1;
     _gfortran_mminloc0_8_i2;
     _gfortran_mminloc0_8_i4;
     _gfortran_mminloc0_8_i8;
@@ -414,8 +582,8 @@ GFORTRAN_1.0 {
     _gfortran_mminloc0_8_r16;
     _gfortran_mminloc0_8_r4;
     _gfortran_mminloc0_8_r8;
-    _gfortran_mminloc1_16_i1;
     _gfortran_mminloc1_16_i16;
+    _gfortran_mminloc1_16_i1;
     _gfortran_mminloc1_16_i2;
     _gfortran_mminloc1_16_i4;
     _gfortran_mminloc1_16_i8;
@@ -423,8 +591,8 @@ GFORTRAN_1.0 {
     _gfortran_mminloc1_16_r16;
     _gfortran_mminloc1_16_r4;
     _gfortran_mminloc1_16_r8;
-    _gfortran_mminloc1_4_i1;
     _gfortran_mminloc1_4_i16;
+    _gfortran_mminloc1_4_i1;
     _gfortran_mminloc1_4_i2;
     _gfortran_mminloc1_4_i4;
     _gfortran_mminloc1_4_i8;
@@ -432,8 +600,8 @@ GFORTRAN_1.0 {
     _gfortran_mminloc1_4_r16;
     _gfortran_mminloc1_4_r4;
     _gfortran_mminloc1_4_r8;
-    _gfortran_mminloc1_8_i1;
     _gfortran_mminloc1_8_i16;
+    _gfortran_mminloc1_8_i1;
     _gfortran_mminloc1_8_i2;
     _gfortran_mminloc1_8_i4;
     _gfortran_mminloc1_8_i8;
@@ -441,8 +609,8 @@ GFORTRAN_1.0 {
     _gfortran_mminloc1_8_r16;
     _gfortran_mminloc1_8_r4;
     _gfortran_mminloc1_8_r8;
-    _gfortran_mminval_i1;
     _gfortran_mminval_i16;
+    _gfortran_mminval_i1;
     _gfortran_mminval_i2;
     _gfortran_mminval_i4;
     _gfortran_mminval_i8;
@@ -456,8 +624,8 @@ GFORTRAN_1.0 {
     _gfortran_mproduct_c16;
     _gfortran_mproduct_c4;
     _gfortran_mproduct_c8;
-    _gfortran_mproduct_i1;
     _gfortran_mproduct_i16;
+    _gfortran_mproduct_i1;
     _gfortran_mproduct_i2;
     _gfortran_mproduct_i4;
     _gfortran_mproduct_i8;
@@ -469,8 +637,8 @@ GFORTRAN_1.0 {
     _gfortran_msum_c16;
     _gfortran_msum_c4;
     _gfortran_msum_c8;
-    _gfortran_msum_i1;
     _gfortran_msum_i16;
+    _gfortran_msum_i1;
     _gfortran_msum_i2;
     _gfortran_msum_i4;
     _gfortran_msum_i8;
@@ -478,15 +646,27 @@ GFORTRAN_1.0 {
     _gfortran_msum_r16;
     _gfortran_msum_r4;
     _gfortran_msum_r8;
+    _gfortran_mvbits_i16;
     _gfortran_mvbits_i1;
     _gfortran_mvbits_i2;
     _gfortran_mvbits_i4;
     _gfortran_mvbits_i8;
+    _gfortran_norm2_r10;
+    _gfortran_norm2_r16;
+    _gfortran_norm2_r4;
+    _gfortran_norm2_r8;
     _gfortran_os_error;
     _gfortran_pack;
+    _gfortran_pack_char4;
     _gfortran_pack_char;
     _gfortran_pack_s;
+    _gfortran_pack_s_char4;
     _gfortran_pack_s_char;
+    _gfortran_parity_l16;
+    _gfortran_parity_l1;
+    _gfortran_parity_l2;
+    _gfortran_parity_l4;
+    _gfortran_parity_l8;
     _gfortran_pause_numeric;
     _gfortran_pause_string;
     _gfortran_perror_sub;
@@ -524,8 +704,8 @@ GFORTRAN_1.0 {
     _gfortran_product_c16;
     _gfortran_product_c4;
     _gfortran_product_c8;
-    _gfortran_product_i1;
     _gfortran_product_i16;
+    _gfortran_product_i1;
     _gfortran_product_i2;
     _gfortran_product_i4;
     _gfortran_product_i8;
@@ -552,6 +732,7 @@ GFORTRAN_1.0 {
     _gfortran_reshape_c16;
     _gfortran_reshape_c4;
     _gfortran_reshape_c8;
+    _gfortran_reshape_char4;
     _gfortran_reshape_char;
     _gfortran_reshape_r10;
     _gfortran_reshape_r16;
@@ -559,31 +740,52 @@ GFORTRAN_1.0 {
     _gfortran_reshape_r8;
     _gfortran_runtime_error;
     _gfortran_runtime_error_at;
+    _gfortran_runtime_warning_at;
     _gfortran_secnds;
     _gfortran_second;
     _gfortran_second_sub;
+    _gfortran_select_string;
+    _gfortran_select_string_char4;
+    _gfortran_selected_char_kind;
     _gfortran_selected_int_kind;
+    _gfortran_selected_real_kind2008;
     _gfortran_selected_real_kind;
-    _gfortran_select_string;
     _gfortran_set_args;
     _gfortran_set_convert;
     _gfortran_set_fpe;
     _gfortran_set_max_subrecord_length;
-    _gfortran_set_record_marker;
     _gfortran_set_options;
+    _gfortran_set_record_marker;
     _gfortran_shape_16;
+    _gfortran_shape_1;
+    _gfortran_shape_2;
     _gfortran_shape_4;
     _gfortran_shape_8;
+    _gfortran_siall_i16;
+    _gfortran_siall_i1;
+    _gfortran_siall_i2;
+    _gfortran_siall_i4;
+    _gfortran_siall_i8;
+    _gfortran_siany_i16;
+    _gfortran_siany_i1;
+    _gfortran_siany_i2;
+    _gfortran_siany_i4;
+    _gfortran_siany_i8;
     _gfortran_signal_func;
     _gfortran_signal_func_int;
     _gfortran_signal_sub;
     _gfortran_signal_sub_int;
+    _gfortran_siparity_i16;
+    _gfortran_siparity_i1;
+    _gfortran_siparity_i2;
+    _gfortran_siparity_i4;
+    _gfortran_siparity_i8;
     _gfortran_size0;
     _gfortran_size1;
     _gfortran_sleep_i4_sub;
     _gfortran_sleep_i8_sub;
-    _gfortran_smaxloc0_16_i1;
     _gfortran_smaxloc0_16_i16;
+    _gfortran_smaxloc0_16_i1;
     _gfortran_smaxloc0_16_i2;
     _gfortran_smaxloc0_16_i4;
     _gfortran_smaxloc0_16_i8;
@@ -591,8 +793,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxloc0_16_r16;
     _gfortran_smaxloc0_16_r4;
     _gfortran_smaxloc0_16_r8;
-    _gfortran_smaxloc0_4_i1;
     _gfortran_smaxloc0_4_i16;
+    _gfortran_smaxloc0_4_i1;
     _gfortran_smaxloc0_4_i2;
     _gfortran_smaxloc0_4_i4;
     _gfortran_smaxloc0_4_i8;
@@ -600,8 +802,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxloc0_4_r16;
     _gfortran_smaxloc0_4_r4;
     _gfortran_smaxloc0_4_r8;
-    _gfortran_smaxloc0_8_i1;
     _gfortran_smaxloc0_8_i16;
+    _gfortran_smaxloc0_8_i1;
     _gfortran_smaxloc0_8_i2;
     _gfortran_smaxloc0_8_i4;
     _gfortran_smaxloc0_8_i8;
@@ -609,8 +811,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxloc0_8_r16;
     _gfortran_smaxloc0_8_r4;
     _gfortran_smaxloc0_8_r8;
-    _gfortran_smaxloc1_16_i1;
     _gfortran_smaxloc1_16_i16;
+    _gfortran_smaxloc1_16_i1;
     _gfortran_smaxloc1_16_i2;
     _gfortran_smaxloc1_16_i4;
     _gfortran_smaxloc1_16_i8;
@@ -618,8 +820,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxloc1_16_r16;
     _gfortran_smaxloc1_16_r4;
     _gfortran_smaxloc1_16_r8;
-    _gfortran_smaxloc1_4_i1;
     _gfortran_smaxloc1_4_i16;
+    _gfortran_smaxloc1_4_i1;
     _gfortran_smaxloc1_4_i2;
     _gfortran_smaxloc1_4_i4;
     _gfortran_smaxloc1_4_i8;
@@ -627,8 +829,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxloc1_4_r16;
     _gfortran_smaxloc1_4_r4;
     _gfortran_smaxloc1_4_r8;
-    _gfortran_smaxloc1_8_i1;
     _gfortran_smaxloc1_8_i16;
+    _gfortran_smaxloc1_8_i1;
     _gfortran_smaxloc1_8_i2;
     _gfortran_smaxloc1_8_i4;
     _gfortran_smaxloc1_8_i8;
@@ -636,8 +838,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxloc1_8_r16;
     _gfortran_smaxloc1_8_r4;
     _gfortran_smaxloc1_8_r8;
-    _gfortran_smaxval_i1;
     _gfortran_smaxval_i16;
+    _gfortran_smaxval_i1;
     _gfortran_smaxval_i2;
     _gfortran_smaxval_i4;
     _gfortran_smaxval_i8;
@@ -645,8 +847,8 @@ GFORTRAN_1.0 {
     _gfortran_smaxval_r16;
     _gfortran_smaxval_r4;
     _gfortran_smaxval_r8;
-    _gfortran_sminloc0_16_i1;
     _gfortran_sminloc0_16_i16;
+    _gfortran_sminloc0_16_i1;
     _gfortran_sminloc0_16_i2;
     _gfortran_sminloc0_16_i4;
     _gfortran_sminloc0_16_i8;
@@ -654,8 +856,8 @@ GFORTRAN_1.0 {
     _gfortran_sminloc0_16_r16;
     _gfortran_sminloc0_16_r4;
     _gfortran_sminloc0_16_r8;
-    _gfortran_sminloc0_4_i1;
     _gfortran_sminloc0_4_i16;
+    _gfortran_sminloc0_4_i1;
     _gfortran_sminloc0_4_i2;
     _gfortran_sminloc0_4_i4;
     _gfortran_sminloc0_4_i8;
@@ -663,8 +865,8 @@ GFORTRAN_1.0 {
     _gfortran_sminloc0_4_r16;
     _gfortran_sminloc0_4_r4;
     _gfortran_sminloc0_4_r8;
-    _gfortran_sminloc0_8_i1;
     _gfortran_sminloc0_8_i16;
+    _gfortran_sminloc0_8_i1;
     _gfortran_sminloc0_8_i2;
     _gfortran_sminloc0_8_i4;
     _gfortran_sminloc0_8_i8;
@@ -672,8 +874,8 @@ GFORTRAN_1.0 {
     _gfortran_sminloc0_8_r16;
     _gfortran_sminloc0_8_r4;
     _gfortran_sminloc0_8_r8;
-    _gfortran_sminloc1_16_i1;
     _gfortran_sminloc1_16_i16;
+    _gfortran_sminloc1_16_i1;
     _gfortran_sminloc1_16_i2;
     _gfortran_sminloc1_16_i4;
     _gfortran_sminloc1_16_i8;
@@ -681,8 +883,8 @@ GFORTRAN_1.0 {
     _gfortran_sminloc1_16_r16;
     _gfortran_sminloc1_16_r4;
     _gfortran_sminloc1_16_r8;
-    _gfortran_sminloc1_4_i1;
     _gfortran_sminloc1_4_i16;
+    _gfortran_sminloc1_4_i1;
     _gfortran_sminloc1_4_i2;
     _gfortran_sminloc1_4_i4;
     _gfortran_sminloc1_4_i8;
@@ -690,8 +892,8 @@ GFORTRAN_1.0 {
     _gfortran_sminloc1_4_r16;
     _gfortran_sminloc1_4_r4;
     _gfortran_sminloc1_4_r8;
-    _gfortran_sminloc1_8_i1;
     _gfortran_sminloc1_8_i16;
+    _gfortran_sminloc1_8_i1;
     _gfortran_sminloc1_8_i2;
     _gfortran_sminloc1_8_i4;
     _gfortran_sminloc1_8_i8;
@@ -699,8 +901,8 @@ GFORTRAN_1.0 {
     _gfortran_sminloc1_8_r16;
     _gfortran_sminloc1_8_r4;
     _gfortran_sminloc1_8_r8;
-    _gfortran_sminval_i1;
     _gfortran_sminval_i16;
+    _gfortran_sminval_i1;
     _gfortran_sminval_i2;
     _gfortran_sminval_i4;
     _gfortran_sminval_i8;
@@ -719,14 +921,14 @@ GFORTRAN_1.0 {
     _gfortran_specific__abs_r16;
     _gfortran_specific__abs_r4;
     _gfortran_specific__abs_r8;
-    _gfortran_specific__acosh_r10;
-    _gfortran_specific__acosh_r16;
-    _gfortran_specific__acosh_r4;
-    _gfortran_specific__acosh_r8;
     _gfortran_specific__acos_r10;
     _gfortran_specific__acos_r16;
     _gfortran_specific__acos_r4;
     _gfortran_specific__acos_r8;
+    _gfortran_specific__acosh_r10;
+    _gfortran_specific__acosh_r16;
+    _gfortran_specific__acosh_r4;
+    _gfortran_specific__acosh_r8;
     _gfortran_specific__aimag_c10;
     _gfortran_specific__aimag_c16;
     _gfortran_specific__aimag_c4;
@@ -739,26 +941,26 @@ GFORTRAN_1.0 {
     _gfortran_specific__anint_r16;
     _gfortran_specific__anint_r4;
     _gfortran_specific__anint_r8;
-    _gfortran_specific__asinh_r10;
-    _gfortran_specific__asinh_r16;
-    _gfortran_specific__asinh_r4;
-    _gfortran_specific__asinh_r8;
     _gfortran_specific__asin_r10;
     _gfortran_specific__asin_r16;
     _gfortran_specific__asin_r4;
     _gfortran_specific__asin_r8;
+    _gfortran_specific__asinh_r10;
+    _gfortran_specific__asinh_r16;
+    _gfortran_specific__asinh_r4;
+    _gfortran_specific__asinh_r8;
     _gfortran_specific__atan2_r10;
     _gfortran_specific__atan2_r16;
     _gfortran_specific__atan2_r4;
     _gfortran_specific__atan2_r8;
-    _gfortran_specific__atanh_r10;
-    _gfortran_specific__atanh_r16;
-    _gfortran_specific__atanh_r4;
-    _gfortran_specific__atanh_r8;
     _gfortran_specific__atan_r10;
     _gfortran_specific__atan_r16;
     _gfortran_specific__atan_r4;
     _gfortran_specific__atan_r8;
+    _gfortran_specific__atanh_r10;
+    _gfortran_specific__atanh_r16;
+    _gfortran_specific__atanh_r4;
+    _gfortran_specific__atanh_r8;
     _gfortran_specific__char_1_i16;
     _gfortran_specific__char_1_i4;
     _gfortran_specific__char_1_i8;
@@ -770,14 +972,14 @@ GFORTRAN_1.0 {
     _gfortran_specific__cos_c16;
     _gfortran_specific__cos_c4;
     _gfortran_specific__cos_c8;
-    _gfortran_specific__cosh_r10;
-    _gfortran_specific__cosh_r16;
-    _gfortran_specific__cosh_r4;
-    _gfortran_specific__cosh_r8;
     _gfortran_specific__cos_r10;
     _gfortran_specific__cos_r16;
     _gfortran_specific__cos_r4;
     _gfortran_specific__cos_r8;
+    _gfortran_specific__cosh_r10;
+    _gfortran_specific__cosh_r16;
+    _gfortran_specific__cosh_r4;
+    _gfortran_specific__cosh_r8;
     _gfortran_specific__dim_i16;
     _gfortran_specific__dim_i4;
     _gfortran_specific__dim_i8;
@@ -842,14 +1044,14 @@ GFORTRAN_1.0 {
     _gfortran_specific__sin_c16;
     _gfortran_specific__sin_c4;
     _gfortran_specific__sin_c8;
-    _gfortran_specific__sinh_r10;
-    _gfortran_specific__sinh_r16;
-    _gfortran_specific__sinh_r4;
-    _gfortran_specific__sinh_r8;
     _gfortran_specific__sin_r10;
     _gfortran_specific__sin_r16;
     _gfortran_specific__sin_r4;
     _gfortran_specific__sin_r8;
+    _gfortran_specific__sinh_r10;
+    _gfortran_specific__sinh_r16;
+    _gfortran_specific__sinh_r4;
+    _gfortran_specific__sinh_r8;
     _gfortran_specific__sqrt_c10;
     _gfortran_specific__sqrt_c16;
     _gfortran_specific__sqrt_c4;
@@ -858,15 +1060,17 @@ GFORTRAN_1.0 {
     _gfortran_specific__sqrt_r16;
     _gfortran_specific__sqrt_r4;
     _gfortran_specific__sqrt_r8;
-    _gfortran_specific__tanh_r10;
-    _gfortran_specific__tanh_r16;
-    _gfortran_specific__tanh_r4;
-    _gfortran_specific__tanh_r8;
     _gfortran_specific__tan_r10;
     _gfortran_specific__tan_r16;
     _gfortran_specific__tan_r4;
     _gfortran_specific__tan_r8;
+    _gfortran_specific__tanh_r10;
+    _gfortran_specific__tanh_r16;
+    _gfortran_specific__tanh_r4;
+    _gfortran_specific__tanh_r8;
     _gfortran_spread;
+    _gfortran_spread_char4;
+    _gfortran_spread_char4_scalar;
     _gfortran_spread_char;
     _gfortran_spread_char_scalar;
     _gfortran_spread_scalar;
@@ -874,8 +1078,8 @@ GFORTRAN_1.0 {
     _gfortran_sproduct_c16;
     _gfortran_sproduct_c4;
     _gfortran_sproduct_c8;
-    _gfortran_sproduct_i1;
     _gfortran_sproduct_i16;
+    _gfortran_sproduct_i1;
     _gfortran_sproduct_i2;
     _gfortran_sproduct_i4;
     _gfortran_sproduct_i8;
@@ -888,8 +1092,8 @@ GFORTRAN_1.0 {
     _gfortran_ssum_c16;
     _gfortran_ssum_c4;
     _gfortran_ssum_c8;
-    _gfortran_ssum_i1;
     _gfortran_ssum_i16;
+    _gfortran_ssum_i1;
     _gfortran_ssum_i2;
     _gfortran_ssum_i4;
     _gfortran_ssum_i8;
@@ -897,10 +1101,6 @@ GFORTRAN_1.0 {
     _gfortran_ssum_r16;
     _gfortran_ssum_r4;
     _gfortran_ssum_r8;
-    _gfortran_stat_i4;
-    _gfortran_stat_i4_sub;
-    _gfortran_stat_i8;
-    _gfortran_stat_i8_sub;
     _gfortran_st_backspace;
     _gfortran_st_close;
     _gfortran_st_endfile;
@@ -909,27 +1109,39 @@ GFORTRAN_1.0 {
     _gfortran_st_iolength;
     _gfortran_st_iolength_done;
     _gfortran_st_open;
-    _gfortran_stop_numeric;
-    _gfortran_stop_string;
     _gfortran_st_read;
     _gfortran_st_read_done;
     _gfortran_st_rewind;
+    _gfortran_st_set_nml_dtio_var;
+    _gfortran_st_set_nml_var;
+    _gfortran_st_set_nml_var_dim;
+    _gfortran_st_wait;
+    _gfortran_st_write;
+    _gfortran_st_write_done;
+    _gfortran_stat_i4;
+    _gfortran_stat_i4_sub;
+    _gfortran_stat_i8;
+    _gfortran_stat_i8_sub;
+    _gfortran_stop_numeric;
+    _gfortran_stop_string;
     _gfortran_string_index;
+    _gfortran_string_index_char4;
     _gfortran_string_len_trim;
+    _gfortran_string_len_trim_char4;
     _gfortran_string_minmax;
+    _gfortran_string_minmax_char4;
     _gfortran_string_scan;
+    _gfortran_string_scan_char4;
     _gfortran_string_trim;
+    _gfortran_string_trim_char4;
     _gfortran_string_verify;
-    _gfortran_st_set_nml_var;
-    _gfortran_st_set_nml_var_dim;
-    _gfortran_st_write;
-    _gfortran_st_write_done;
+    _gfortran_string_verify_char4;
     _gfortran_sum_c10;
     _gfortran_sum_c16;
     _gfortran_sum_c4;
     _gfortran_sum_c8;
-    _gfortran_sum_i1;
     _gfortran_sum_i16;
+    _gfortran_sum_i1;
     _gfortran_sum_i2;
     _gfortran_sum_i4;
     _gfortran_sum_i8;
@@ -948,11 +1160,24 @@ GFORTRAN_1.0 {
     _gfortran_time8_func;
     _gfortran_time_func;
     _gfortran_transfer_array;
+    _gfortran_transfer_array_write;
     _gfortran_transfer_character;
+    _gfortran_transfer_character_wide;
+    _gfortran_transfer_character_wide_write;
+    _gfortran_transfer_character_write;
+    _gfortran_transfer_complex128;
+    _gfortran_transfer_complex128_write;
     _gfortran_transfer_complex;
+    _gfortran_transfer_complex_write;
+    _gfortran_transfer_derived;
     _gfortran_transfer_integer;
+    _gfortran_transfer_integer_write;
     _gfortran_transfer_logical;
+    _gfortran_transfer_logical_write;
+    _gfortran_transfer_real128;
+    _gfortran_transfer_real128_write;
     _gfortran_transfer_real;
+    _gfortran_transfer_real_write;
     _gfortran_ttynam;
     _gfortran_ttynam_sub;
     _gfortran_umask_i4;
@@ -963,274 +1188,16 @@ GFORTRAN_1.0 {
     _gfortran_unlink_i4_sub;
     _gfortran_unlink_i8_sub;
     _gfortran_unpack0;
+    _gfortran_unpack0_char4;
     _gfortran_unpack0_char;
     _gfortran_unpack1;
+    _gfortran_unpack1_char4;
     _gfortran_unpack1_char;
   local:
     *;
 };
 
-GFORTRAN_1.1 {
-  global:
-    _gfortran_adjustl_char4;
-    _gfortran_adjustr_char4;
-    _gfortran_compare_string_char4;
-    _gfortran_concat_string_char4;
-    _gfortran_convert_char1_to_char4;
-    _gfortran_convert_char4_to_char1;
-    _gfortran_cshift0_16;
-    _gfortran_cshift0_16_char;
-    _gfortran_cshift0_1_char4;
-    _gfortran_cshift0_2_char4;
-    _gfortran_cshift0_4_char4;
-    _gfortran_cshift0_8_char4;
-    _gfortran_cshift1_16_char4;
-    _gfortran_cshift1_4_char4;
-    _gfortran_cshift1_8_char4;
-    _gfortran_eoshift0_16;
-    _gfortran_eoshift0_16_char;
-    _gfortran_eoshift0_1_char4;
-    _gfortran_eoshift0_2_char4;
-    _gfortran_eoshift0_4_char4;
-    _gfortran_eoshift0_8_char4;
-    _gfortran_eoshift1_16_char4;
-    _gfortran_eoshift1_4_char4;
-    _gfortran_eoshift1_8_char4;
-    _gfortran_eoshift2_16;
-    _gfortran_eoshift2_16_char;
-    _gfortran_eoshift2_1_char4;
-    _gfortran_eoshift2_2_char4;
-    _gfortran_eoshift2_4_char4;
-    _gfortran_eoshift2_8_char4;
-    _gfortran_eoshift3_16_char4;
-    _gfortran_eoshift3_4_char4;
-    _gfortran_eoshift3_8_char4;
-    _gfortran_erfc_scaled_r10;
-    _gfortran_erfc_scaled_r16;
-    _gfortran_erfc_scaled_r4;
-    _gfortran_erfc_scaled_r8;
-    _gfortran_execute_command_line_i4;
-    _gfortran_execute_command_line_i8;
-    _gfortran_pack_char4;
-    _gfortran_pack_s_char4;
-    _gfortran_reshape_char4;
-    _gfortran_runtime_warning_at;
-    _gfortran_selected_char_kind;
-    _gfortran_select_string_char4;
-    _gfortran_spread_char4;
-    _gfortran_spread_char4_scalar;
-    _gfortran_string_index_char4;
-    _gfortran_string_len_trim_char4;
-    _gfortran_string_minmax_char4;
-    _gfortran_string_scan_char4;
-    _gfortran_string_trim_char4;
-    _gfortran_string_verify_char4;
-    _gfortran_st_wait;
-    _gfortran_transfer_character_wide;
-    _gfortran_unpack0_char4;
-    _gfortran_unpack1_char4;
-} GFORTRAN_1.0;
-
-
-GFORTRAN_1.2 {
-  global:
-    _gfortran_is_extension_of;
-} GFORTRAN_1.1;
-
-GFORTRAN_1.3 {
-  global:
-    _gfortran_error_stop_string;
-} GFORTRAN_1.2;
-
-GFORTRAN_1.4 {
-  global:
-    _gfortran_bessel_jn_r4;
-    _gfortran_bessel_jn_r8;
-    _gfortran_bessel_jn_r10;
-    _gfortran_bessel_jn_r16;
-    _gfortran_bessel_yn_r4;
-    _gfortran_bessel_yn_r8;
-    _gfortran_bessel_yn_r10;
-    _gfortran_bessel_yn_r16;
-    _gfortran_error_stop_numeric;
-    _gfortran_iall_i1;
-    _gfortran_iall_i2;
-    _gfortran_iall_i4;
-    _gfortran_iall_i8;
-    _gfortran_iall_i16;
-    _gfortran_miall_i1;
-    _gfortran_miall_i2;
-    _gfortran_miall_i4;
-    _gfortran_miall_i8;
-    _gfortran_miall_i16;
-    _gfortran_siall_i1;
-    _gfortran_siall_i2;
-    _gfortran_siall_i4;
-    _gfortran_siall_i8;
-    _gfortran_siall_i16;
-    _gfortran_iany_i1;
-    _gfortran_iany_i2;
-    _gfortran_iany_i4;
-    _gfortran_iany_i8;
-    _gfortran_iany_i16;
-    _gfortran_miany_i1;
-    _gfortran_miany_i2;
-    _gfortran_miany_i4;
-    _gfortran_miany_i8;
-    _gfortran_miany_i16;
-    _gfortran_siany_i1;
-    _gfortran_siany_i2;
-    _gfortran_siany_i4;
-    _gfortran_siany_i8;
-    _gfortran_siany_i16;
-    _gfortran_iparity_i1;
-    _gfortran_iparity_i2;
-    _gfortran_iparity_i4;
-    _gfortran_iparity_i8;
-    _gfortran_iparity_i16;
-    _gfortran_miparity_i1;
-    _gfortran_miparity_i2;
-    _gfortran_miparity_i4;
-    _gfortran_miparity_i8;
-    _gfortran_miparity_i16;
-    _gfortran_siparity_i1;
-    _gfortran_siparity_i2;
-    _gfortran_siparity_i4;
-    _gfortran_siparity_i8;
-    _gfortran_siparity_i16;
-    _gfortran_norm2_r4;
-    _gfortran_norm2_r8;
-    _gfortran_norm2_r10;
-    _gfortran_norm2_r16;
-    _gfortran_parity_l1;
-    _gfortran_parity_l2;
-    _gfortran_parity_l4;
-    _gfortran_parity_l8;
-    _gfortran_parity_l16;
-    _gfortran_selected_real_kind2008;
-    _gfortran_transfer_array_write;
-    _gfortran_transfer_character_write;
-    _gfortran_transfer_character_wide_write;
-    _gfortran_transfer_complex_write;
-    _gfortran_transfer_complex128;
-    _gfortran_transfer_complex128_write;
-    _gfortran_transfer_integer_write;
-    _gfortran_transfer_logical_write;
-    _gfortran_transfer_real_write;
-    _gfortran_transfer_real128;
-    _gfortran_transfer_real128_write;
-    _gfortran_cshift0_16_char4;
-    _gfortran_eoshift0_16_char4;
-    _gfortran_eoshift2_16_char4;
-} GFORTRAN_1.3;
-
-GFORTRAN_1.5 {
-  global:
-    _gfortran_ftell2;
-    _gfortran_backtrace;
-} GFORTRAN_1.4;
-
-GFORTRAN_1.6 {
-  global:
-    _gfortran_ieee_procedure_entry;
-    _gfortran_ieee_procedure_exit;
-    __ieee_arithmetic_MOD_ieee_class_4;
-    __ieee_arithmetic_MOD_ieee_class_8;
-    __ieee_arithmetic_MOD_ieee_class_type_eq;
-    __ieee_arithmetic_MOD_ieee_class_type_ne;
-    __ieee_arithmetic_MOD_ieee_get_rounding_mode;
-    __ieee_arithmetic_MOD_ieee_get_underflow_mode;
-    __ieee_arithmetic_MOD_ieee_round_type_eq;
-    __ieee_arithmetic_MOD_ieee_round_type_ne;
-    __ieee_arithmetic_MOD_ieee_selected_real_kind;
-    __ieee_arithmetic_MOD_ieee_set_rounding_mode;
-    __ieee_arithmetic_MOD_ieee_set_underflow_mode;
-    __ieee_arithmetic_MOD_ieee_support_datatype_4;
-    __ieee_arithmetic_MOD_ieee_support_datatype_8;
-    __ieee_arithmetic_MOD_ieee_support_datatype_10;
-    __ieee_arithmetic_MOD_ieee_support_datatype_16;
-    __ieee_arithmetic_MOD_ieee_support_datatype_noarg;
-    __ieee_arithmetic_MOD_ieee_support_denormal_4;
-    __ieee_arithmetic_MOD_ieee_support_denormal_8;
-    __ieee_arithmetic_MOD_ieee_support_denormal_10;
-    __ieee_arithmetic_MOD_ieee_support_denormal_16;
-    __ieee_arithmetic_MOD_ieee_support_denormal_noarg;
-    __ieee_arithmetic_MOD_ieee_support_divide_4;
-    __ieee_arithmetic_MOD_ieee_support_divide_8;
-    __ieee_arithmetic_MOD_ieee_support_divide_10;
-    __ieee_arithmetic_MOD_ieee_support_divide_16;
-    __ieee_arithmetic_MOD_ieee_support_divide_noarg;
-    __ieee_arithmetic_MOD_ieee_support_inf_4;
-    __ieee_arithmetic_MOD_ieee_support_inf_8;
-    __ieee_arithmetic_MOD_ieee_support_inf_10;
-    __ieee_arithmetic_MOD_ieee_support_inf_16;
-    __ieee_arithmetic_MOD_ieee_support_inf_noarg;
-    __ieee_arithmetic_MOD_ieee_support_io_4;
-    __ieee_arithmetic_MOD_ieee_support_io_8;
-    __ieee_arithmetic_MOD_ieee_support_io_10;
-    __ieee_arithmetic_MOD_ieee_support_io_16;
-    __ieee_arithmetic_MOD_ieee_support_io_noarg;
-    __ieee_arithmetic_MOD_ieee_support_nan_4;
-    __ieee_arithmetic_MOD_ieee_support_nan_8;
-    __ieee_arithmetic_MOD_ieee_support_nan_10;
-    __ieee_arithmetic_MOD_ieee_support_nan_16;
-    __ieee_arithmetic_MOD_ieee_support_nan_noarg;
-    __ieee_arithmetic_MOD_ieee_support_rounding_4;
-    __ieee_arithmetic_MOD_ieee_support_rounding_8;
-    __ieee_arithmetic_MOD_ieee_support_rounding_10;
-    __ieee_arithmetic_MOD_ieee_support_rounding_16;
-    __ieee_arithmetic_MOD_ieee_support_rounding_noarg;
-    __ieee_arithmetic_MOD_ieee_support_sqrt_4;
-    __ieee_arithmetic_MOD_ieee_support_sqrt_8;
-    __ieee_arithmetic_MOD_ieee_support_sqrt_10;
-    __ieee_arithmetic_MOD_ieee_support_sqrt_16;
-    __ieee_arithmetic_MOD_ieee_support_sqrt_noarg;
-    __ieee_arithmetic_MOD_ieee_support_standard_4;
-    __ieee_arithmetic_MOD_ieee_support_standard_8;
-    __ieee_arithmetic_MOD_ieee_support_standard_10;
-    __ieee_arithmetic_MOD_ieee_support_standard_16;
-    __ieee_arithmetic_MOD_ieee_support_standard_noarg;
-    __ieee_arithmetic_MOD_ieee_support_underflow_control_4;
-    __ieee_arithmetic_MOD_ieee_support_underflow_control_8;
-    __ieee_arithmetic_MOD_ieee_support_underflow_control_10;
-    __ieee_arithmetic_MOD_ieee_support_underflow_control_16;
-    __ieee_arithmetic_MOD_ieee_support_underflow_control_noarg;
-    __ieee_arithmetic_MOD_ieee_value_4;
-    __ieee_arithmetic_MOD_ieee_value_8;
-    __ieee_exceptions_MOD_ieee_all;
-    __ieee_exceptions_MOD_ieee_get_flag;
-    __ieee_exceptions_MOD_ieee_get_halting_mode;
-    __ieee_exceptions_MOD_ieee_get_status;
-    __ieee_exceptions_MOD_ieee_set_flag;
-    __ieee_exceptions_MOD_ieee_set_halting_mode;
-    __ieee_exceptions_MOD_ieee_set_status;
-    __ieee_exceptions_MOD_ieee_support_flag_4;
-    __ieee_exceptions_MOD_ieee_support_flag_8;
-    __ieee_exceptions_MOD_ieee_support_flag_noarg;
-    __ieee_exceptions_MOD_ieee_support_halting;
-    __ieee_exceptions_MOD_ieee_usual;
-} GFORTRAN_1.5;
-
-GFORTRAN_1.7 {
-  global:
-    __ieee_arithmetic_MOD_ieee_class_10;
-    __ieee_arithmetic_MOD_ieee_class_16;
-    __ieee_arithmetic_MOD_ieee_value_10;
-    __ieee_arithmetic_MOD_ieee_value_16;
-    __ieee_exceptions_MOD_ieee_support_flag_10;
-    __ieee_exceptions_MOD_ieee_support_flag_16;
-    _gfortran_mvbits_i16;
-    _gfortran_shape_1;
-    _gfortran_shape_2;
-} GFORTRAN_1.6;
-
-GFORTRAN_1.8 {
-  global:
-    _gfortran_st_set_nml_dtio_var;
-    _gfortran_transfer_derived;
-} GFORTRAN_1.7;
-
-F2C_1.0 {
+GFORTRAN_F2C_7 {
   global:
     _gfortran_f2c_specific__abs_c4;
     _gfortran_f2c_specific__abs_r4;
@@ -1272,7 +1239,7 @@ F2C_1.0 {
     _gfortran_f2c_specific__tan_r4;
 };
 
-GFORTRAN_C99_1.0 {
+GFORTRAN_C99_7 {
   global:
     acosf;
     acoshf;
@@ -1360,10 +1327,6 @@ GFORTRAN_C99_1.0 {
     y0f;
     y1f;
     ynf;
-};
-
-GFORTRAN_C99_1.1 {
-  global:
     cacos;
     cacosf;
     cacosh;
@@ -1389,4 +1352,4 @@ GFORTRAN_C99_1.1 {
     lroundf;
     lroundl;
     roundl;
-} GFORTRAN_C99_1.0;
+};

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-20  9:34         ` FX
@ 2016-12-21  8:28           ` Janne Blomqvist
  2016-12-21  9:50             ` FX
  0 siblings, 1 reply; 13+ messages in thread
From: Janne Blomqvist @ 2016-12-21  8:28 UTC (permalink / raw)
  To: FX; +Cc: Fortran List, GCC Patches

On Tue, Dec 20, 2016 at 11:31 AM, FX <fxcoudert@gmail.com> wrote:
>> I don't understand. Why would it imply a 1:1 mapping of release series
>> with major ABI versions?
>
> OK, I thought you meant to map libgfortran version numbers (libgfortran.so.7 with GCC 7). If it’s the gfortran.map node names, I’m happy with that indeed.
>
> Attached patch regtested on x86_64-apple-darwin16.3.0.
> OK to commit?

Ok, thanks!

>
>
>> Currently we have _gfortran_, that is with a single underscore in the
>> beginning, so it's not in the "C/POSIX reserved for the implementation
>> namespace". But yes, I agree that at least those functions documented
>> under the non-Fortran main program section in the manual should be
>> kept as is.
>
> Then, if we keep some functions under _gfortran_, I say let’s keep them all there. It’s not hurting, and the few users who care have come to expect it.

Fair enough, works for me.




-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Remove unused libgfortran functions
  2016-12-21  8:28           ` Janne Blomqvist
@ 2016-12-21  9:50             ` FX
  0 siblings, 0 replies; 13+ messages in thread
From: FX @ 2016-12-21  9:50 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Fortran List, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 381 bytes --]

I followed up with the following patch, committed as revision 243841, removing the old _gfortran_ftell and renaming the modern _gfortran_ftell2. It was bootstrapped and regtested on x86_64-apple-darwin16.3.0.

This is the last item from https://gcc.gnu.org/wiki/LibgfortranAbiCleanup <https://gcc.gnu.org/wiki/LibgfortranAbiCleanup> which I feel comfortable addressing.

FX


[-- Attachment #2: ftell.ChangeLog --]
[-- Type: application/octet-stream, Size: 301 bytes --]

2016-12-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* iresolve.c (gfc_resolve_ftell): Call "ftell" instead of "ftell2".

2016-12-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* gfortran.map: Remove _gfortran_ftell2.
	* io/intrinsics.c (ftell): Remove.
	(ftell2): Rename to ftell.


[-- Attachment #3: ftell.diff --]
[-- Type: application/octet-stream, Size: 1824 bytes --]

Index: gcc/fortran/iresolve.c
===================================================================
--- gcc/fortran/iresolve.c	(revision 243826)
+++ gcc/fortran/iresolve.c	(working copy)
@@ -2604,7 +2604,7 @@ gfc_resolve_ftell (gfc_expr *f, gfc_expr
       gfc_convert_type (u, &ts, 2);
     }
 
-  f->value.function.name = gfc_get_string (PREFIX ("ftell2"));
+  f->value.function.name = gfc_get_string (PREFIX ("ftell"));
 }
 
 
Index: libgfortran/gfortran.map
===================================================================
--- libgfortran/gfortran.map	(revision 243839)
+++ libgfortran/gfortran.map	(working copy)
@@ -257,7 +257,6 @@ GFORTRAN_7 {
     _gfortran_fstat_i4_sub;
     _gfortran_fstat_i8;
     _gfortran_fstat_i8_sub;
-    _gfortran_ftell2;
     _gfortran_ftell;
     _gfortran_ftell_i1_sub;
     _gfortran_ftell_i2_sub;
Index: libgfortran/io/intrinsics.c
===================================================================
--- libgfortran/io/intrinsics.c	(revision 243826)
+++ libgfortran/io/intrinsics.c	(working copy)
@@ -272,29 +272,11 @@ gf_ftell (int unit)
 }
 
 
-/* Here is the ftell function with an incorrect return type; retained
-   due to ABI compatibility.  */
-
-extern size_t PREFIX(ftell) (int *);
+extern GFC_IO_INT PREFIX(ftell) (int *);
 export_proto_np(PREFIX(ftell));
 
-size_t
-PREFIX(ftell) (int * unit)
-{
-  return gf_ftell (*unit);
-}
-
-
-/* Here is the ftell function with the correct return type, ensuring
-   that large files can be supported as long as the target supports
-   large integers; as of 4.8 the FTELL intrinsic function will call
-   this one instead of the old ftell above.  */
-
-extern GFC_IO_INT PREFIX(ftell2) (int *);
-export_proto_np(PREFIX(ftell2));
-
 GFC_IO_INT
-PREFIX(ftell2) (int * unit)
+PREFIX(ftell) (int * unit)
 {
   return gf_ftell (*unit);
 }

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-12-21  9:41 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-16 13:01 [PATCH] Remove unused libgfortran functions Janne Blomqvist
2016-12-16 14:03 ` FX
2016-12-16 17:46   ` Janne Blomqvist
2016-12-16 18:52     ` Steve Kargl
2016-12-19 11:44     ` FX
2016-12-19 16:15       ` Janne Blomqvist
2016-12-20  9:34         ` FX
2016-12-21  8:28           ` Janne Blomqvist
2016-12-21  9:50             ` FX
2016-12-19 14:48 ` FX
2016-12-19 15:35   ` Janne Blomqvist
2016-12-19 16:18     ` FX
2016-12-19 16:32       ` Janne Blomqvist

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).