aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2006-10-07 13:34:16 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2006-10-07 13:34:16 +0000
commit0e7e7e6e82451de69f2449372e91df1f55888be8 (patch)
tree7d388fa3ec358e48da0a798ae99b8b3ed8f52f37 /libgfortran
parent73d1943acd41e5ee89a530d31aef4559a9cd76ed (diff)
downloadgcc-0e7e7e6e82451de69f2449372e91df1f55888be8.zip
gcc-0e7e7e6e82451de69f2449372e91df1f55888be8.tar.gz
gcc-0e7e7e6e82451de69f2449372e91df1f55888be8.tar.bz2
re PR fortran/16580 ([4.1 only] gfortran ICE on test g77.f-torture/execute/intrinsic77.f)
PR fortran/16580 PR fortran/29288 * gcc/fortran/intrinsic.c (add_sym): Define the actual_ok when a gfc_intrinsic_sym structure is filled. (gfc_intrinsic_actual_ok): New function. (add_sym_0s, add_sym_1s, add_sym_2s, add_sym_3s, add_sym_4s, add_sym_5s): Intrinsic subroutines are not allowed as actual arguments, so we remove argument actual_ok. (add_functions): Correct the values for actual_ok of all intrinsics. (add_subroutines): Remove the actual_ok argument, which was never used. * gcc/fortran/intrinsic.h (gfc_intrinsic_actual_ok): New prototype. * gcc/fortran/gfortran.h (gfc_resolve_index_func): New prototype. * gcc/fortran/resolve.c (resolve_actual_arglist): Check whether an intrinsic used as an argument list is allowed there. * gcc/fortran/iresolve.c (gfc_resolve_index_func): New function. (gfc_resolve_len): Change intrinsic function name to agree with libgfortran. * gcc/fortran/trans-decl.c (gfc_get_extern_function_decl): Add new case, because some specific intrinsics take 3 arguments. * gcc/fortran/intrinsic.texi: DIMAG is a GNU extension. * libgfortran/Makefile.am: Add the new files to the build process, and rules to build them. * libgfortran/Makefile.in: Regenerate. * libgfortran/m4/misc_specifics.m4: New file. * libgfortran/m4/specific.m4: Add new special cases for function with complex argument and real result, like abs_c* and aimag_c*. * libgfortran/intrinsics/f2c_specifics.F90: Add specifics for AIMAG, ASINH, ACOSH and ATANH. * libgfortran/generated/_aimag_c4.F90: New file. * libgfortran/generated/_aimag_c8.F90: New file. * libgfortran/generated/_asinh_r10.F90: New file. * libgfortran/generated/_acosh_r16.F90: New file. * libgfortran/generated/_aimag_c10.F90: New file. * libgfortran/generated/_atanh_r16.F90: New file. * libgfortran/generated/_acosh_r4.F90: New file. * libgfortran/generated/_acosh_r8.F90: New file. * libgfortran/generated/_asinh_r4.F90: New file. * libgfortran/generated/_asinh_r8.F90: New file. * libgfortran/generated/_asinh_r16.F90: New file. * libgfortran/generated/_atanh_r4.F90: New file. * libgfortran/generated/_atanh_r8.F90: New file. * libgfortran/generated/_acosh_r10.F90: New file. * libgfortran/generated/misc_specifics.F90: New file. * libgfortran/generated/_aimag_c16.F90: New file. * libgfortran/generated/_atanh_r10.F90: New file. * gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90: Add tests for using all possible intrinsics as actual arguments. * gcc/testsuite/gfortran.dg/specifics_1.f90: Add tests for using all possible intrinsics as actual arguments. * gcc/testsuite/gfortran.dg/specifics_2.f90: New file. * gcc/testsuite/gfortran.dg/specifics_3.f90: New file. From-SVN: r117534
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog33
-rw-r--r--libgfortran/Makefile.am27
-rw-r--r--libgfortran/Makefile.in94
-rw-r--r--libgfortran/generated/_acosh_r10.F9051
-rw-r--r--libgfortran/generated/_acosh_r16.F9051
-rw-r--r--libgfortran/generated/_acosh_r4.F9051
-rw-r--r--libgfortran/generated/_acosh_r8.F9051
-rw-r--r--libgfortran/generated/_aimag_c10.F9051
-rw-r--r--libgfortran/generated/_aimag_c16.F9051
-rw-r--r--libgfortran/generated/_aimag_c4.F9051
-rw-r--r--libgfortran/generated/_aimag_c8.F9051
-rw-r--r--libgfortran/generated/_asinh_r10.F9051
-rw-r--r--libgfortran/generated/_asinh_r16.F9051
-rw-r--r--libgfortran/generated/_asinh_r4.F9051
-rw-r--r--libgfortran/generated/_asinh_r8.F9051
-rw-r--r--libgfortran/generated/_atanh_r10.F9051
-rw-r--r--libgfortran/generated/_atanh_r16.F9051
-rw-r--r--libgfortran/generated/_atanh_r4.F9051
-rw-r--r--libgfortran/generated/_atanh_r8.F9051
-rw-r--r--libgfortran/generated/misc_specifics.F90211
-rw-r--r--libgfortran/intrinsics/f2c_specifics.F9025
-rw-r--r--libgfortran/m4/misc_specifics.m464
-rw-r--r--libgfortran/m4/specific.m46
23 files changed, 1262 insertions, 14 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 57cee4c..bb7b7ba 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,6 +1,37 @@
+2006-10-01 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR fortran/16580
+ PR fortran/29288
+ * libgfortran/Makefile.am: Add the new files to the build
+ process, and rules to build them.
+ * libgfortran/Makefile.in: Regenerate.
+ * libgfortran/m4/misc_specifics.m4: New file.
+ * libgfortran/m4/specific.m4: Add new special cases for function
+ with complex argument and real result, like abs_c* and aimag_c*.
+ * libgfortran/intrinsics/f2c_specifics.F90: Add specifics for
+ AIMAG, ASINH, ACOSH and ATANH.
+ * libgfortran/generated/_aimag_c4.F90: New file.
+ * libgfortran/generated/_aimag_c8.F90: New file.
+ * libgfortran/generated/_asinh_r10.F90: New file.
+ * libgfortran/generated/_acosh_r16.F90: New file.
+ * libgfortran/generated/_aimag_c10.F90: New file.
+ * libgfortran/generated/_atanh_r16.F90: New file.
+ * libgfortran/generated/_acosh_r4.F90: New file.
+ * libgfortran/generated/_acosh_r8.F90: New file.
+ * libgfortran/generated/_asinh_r4.F90: New file.
+ * libgfortran/generated/_asinh_r8.F90: New file.
+ * libgfortran/generated/_asinh_r16.F90: New file.
+ * libgfortran/generated/_atanh_r4.F90: New file.
+ * libgfortran/generated/_atanh_r8.F90: New file.
+ * libgfortran/generated/_acosh_r10.F90: New file.
+ * libgfortran/generated/misc_specifics.F90: New file.
+ * libgfortran/generated/_aimag_c16.F90: New file.
+ * libgfortran/generated/_atanh_r10.F90: New file.
+
2006-10-05 Danny Smith <dannysmith@users.sourceforge.net>
- * acinclude.m4 (HAVE_ATTRIBUTE_ALIAS): Remove __USER_LABEL_PREFIX__ from test.
+ * acinclude.m4 (HAVE_ATTRIBUTE_ALIAS): Remove __USER_LABEL_PREFIX__
+ from test.
* configure: Regenerate.
2006-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am
index e1c952a..dd5b684 100644
--- a/libgfortran/Makefile.am
+++ b/libgfortran/Makefile.am
@@ -419,7 +419,8 @@ m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.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/fraction.m4 m4/nearest.m4 m4/set_exponent.m4 m4/pow.m4 \
+ m4/misc_specifics.m4
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) \
@@ -444,6 +445,10 @@ generated/_abs_r4.F90 \
generated/_abs_r8.F90 \
generated/_abs_r10.F90 \
generated/_abs_r16.F90 \
+generated/_aimag_c4.F90 \
+generated/_aimag_c8.F90 \
+generated/_aimag_c10.F90 \
+generated/_aimag_c16.F90 \
generated/_exp_r4.F90 \
generated/_exp_r8.F90 \
generated/_exp_r10.F90 \
@@ -476,14 +481,26 @@ generated/_asin_r4.F90 \
generated/_asin_r8.F90 \
generated/_asin_r10.F90 \
generated/_asin_r16.F90 \
+generated/_asinh_r4.F90 \
+generated/_asinh_r8.F90 \
+generated/_asinh_r10.F90 \
+generated/_asinh_r16.F90 \
generated/_acos_r4.F90 \
generated/_acos_r8.F90 \
generated/_acos_r10.F90 \
generated/_acos_r16.F90 \
+generated/_acosh_r4.F90 \
+generated/_acosh_r8.F90 \
+generated/_acosh_r10.F90 \
+generated/_acosh_r16.F90 \
generated/_atan_r4.F90 \
generated/_atan_r8.F90 \
generated/_atan_r10.F90 \
generated/_atan_r16.F90 \
+generated/_atanh_r4.F90 \
+generated/_atanh_r8.F90 \
+generated/_atanh_r10.F90 \
+generated/_atanh_r16.F90 \
generated/_sin_r4.F90 \
generated/_sin_r8.F90 \
generated/_sin_r10.F90 \
@@ -556,9 +573,12 @@ generated/_mod_r8.F90 \
generated/_mod_r10.F90 \
generated/_mod_r16.F90
+gfor_misc_specifics = generated/misc_specifics.F90
+
gfor_specific_src= \
$(gfor_built_specific_src) \
$(gfor_built_specific2_src) \
+$(gfor_misc_specifics) \
intrinsics/dprod_r8.f90 \
intrinsics/f2c_specifics.F90
@@ -572,7 +592,7 @@ $(patsubst %.c,%.lo,$(notdir $(i_matmul_c))): AM_CFLAGS += -ftree-vectorize -fun
$(patsubst %.c,%.lo,$(notdir $(i_matmull_c))): AM_CFLAGS += -funroll-loops
BUILT_SOURCES=$(gfor_built_src) $(gfor_built_specific_src) \
- $(gfor_built_specific2_src)
+ $(gfor_built_specific2_src) $(gfor_misc_specifics)
libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
$(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_src)
@@ -685,6 +705,9 @@ $(gfor_built_specific_src): m4/specific.m4 m4/head.m4
$(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
$(M4) -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $(srcdir)/$@
+
+$(gfor_misc_specifics): m4/misc_specifics.m4 m4/head.m4
+ m4 -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $(srcdir)/$@
## end of maintainer mode only rules
endif
diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in
index c53c6de..77defb5 100644
--- a/libgfortran/Makefile.in
+++ b/libgfortran/Makefile.in
@@ -179,15 +179,19 @@ am__objects_30 = associated.lo abort.lo access.lo args.lo bessel.lo \
am__objects_31 =
am__objects_32 = _abs_c4.lo _abs_c8.lo _abs_c10.lo _abs_c16.lo \
_abs_i4.lo _abs_i8.lo _abs_i16.lo _abs_r4.lo _abs_r8.lo \
- _abs_r10.lo _abs_r16.lo _exp_r4.lo _exp_r8.lo _exp_r10.lo \
+ _abs_r10.lo _abs_r16.lo _aimag_c4.lo _aimag_c8.lo \
+ _aimag_c10.lo _aimag_c16.lo _exp_r4.lo _exp_r8.lo _exp_r10.lo \
_exp_r16.lo _exp_c4.lo _exp_c8.lo _exp_c10.lo _exp_c16.lo \
_log_r4.lo _log_r8.lo _log_r10.lo _log_r16.lo _log_c4.lo \
_log_c8.lo _log_c10.lo _log_c16.lo _log10_r4.lo _log10_r8.lo \
_log10_r10.lo _log10_r16.lo _sqrt_r4.lo _sqrt_r8.lo \
_sqrt_r10.lo _sqrt_r16.lo _sqrt_c4.lo _sqrt_c8.lo _sqrt_c10.lo \
_sqrt_c16.lo _asin_r4.lo _asin_r8.lo _asin_r10.lo _asin_r16.lo \
- _acos_r4.lo _acos_r8.lo _acos_r10.lo _acos_r16.lo _atan_r4.lo \
- _atan_r8.lo _atan_r10.lo _atan_r16.lo _sin_r4.lo _sin_r8.lo \
+ _asinh_r4.lo _asinh_r8.lo _asinh_r10.lo _asinh_r16.lo \
+ _acos_r4.lo _acos_r8.lo _acos_r10.lo _acos_r16.lo _acosh_r4.lo \
+ _acosh_r8.lo _acosh_r10.lo _acosh_r16.lo _atan_r4.lo \
+ _atan_r8.lo _atan_r10.lo _atan_r16.lo _atanh_r4.lo \
+ _atanh_r8.lo _atanh_r10.lo _atanh_r16.lo _sin_r4.lo _sin_r8.lo \
_sin_r10.lo _sin_r16.lo _sin_c4.lo _sin_c8.lo _sin_c10.lo \
_sin_c16.lo _cos_r4.lo _cos_r8.lo _cos_r10.lo _cos_r16.lo \
_cos_c4.lo _cos_c8.lo _cos_c10.lo _cos_c16.lo _tan_r4.lo \
@@ -203,11 +207,12 @@ am__objects_33 = _sign_i4.lo _sign_i8.lo _sign_i16.lo _sign_r4.lo \
_atan2_r4.lo _atan2_r8.lo _atan2_r10.lo _atan2_r16.lo \
_mod_i4.lo _mod_i8.lo _mod_i16.lo _mod_r4.lo _mod_r8.lo \
_mod_r10.lo _mod_r16.lo
-am__objects_34 = $(am__objects_32) $(am__objects_33) dprod_r8.lo \
- f2c_specifics.lo
+am__objects_34 = misc_specifics.lo
+am__objects_35 = $(am__objects_32) $(am__objects_33) $(am__objects_34) \
+ dprod_r8.lo f2c_specifics.lo
am_libgfortran_la_OBJECTS = $(am__objects_1) $(am__objects_28) \
$(am__objects_29) $(am__objects_30) $(am__objects_31) \
- $(am__objects_34)
+ $(am__objects_35)
libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
libgfortranbegin_la_LIBADD =
am_libgfortranbegin_la_OBJECTS = fmain.lo
@@ -767,7 +772,8 @@ m4_files = m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.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/fraction.m4 m4/nearest.m4 m4/set_exponent.m4 m4/pow.m4 \
+ m4/misc_specifics.m4
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) \
@@ -793,6 +799,10 @@ generated/_abs_r4.F90 \
generated/_abs_r8.F90 \
generated/_abs_r10.F90 \
generated/_abs_r16.F90 \
+generated/_aimag_c4.F90 \
+generated/_aimag_c8.F90 \
+generated/_aimag_c10.F90 \
+generated/_aimag_c16.F90 \
generated/_exp_r4.F90 \
generated/_exp_r8.F90 \
generated/_exp_r10.F90 \
@@ -825,14 +835,26 @@ generated/_asin_r4.F90 \
generated/_asin_r8.F90 \
generated/_asin_r10.F90 \
generated/_asin_r16.F90 \
+generated/_asinh_r4.F90 \
+generated/_asinh_r8.F90 \
+generated/_asinh_r10.F90 \
+generated/_asinh_r16.F90 \
generated/_acos_r4.F90 \
generated/_acos_r8.F90 \
generated/_acos_r10.F90 \
generated/_acos_r16.F90 \
+generated/_acosh_r4.F90 \
+generated/_acosh_r8.F90 \
+generated/_acosh_r10.F90 \
+generated/_acosh_r16.F90 \
generated/_atan_r4.F90 \
generated/_atan_r8.F90 \
generated/_atan_r10.F90 \
generated/_atan_r16.F90 \
+generated/_atanh_r4.F90 \
+generated/_atanh_r8.F90 \
+generated/_atanh_r10.F90 \
+generated/_atanh_r16.F90 \
generated/_sin_r4.F90 \
generated/_sin_r8.F90 \
generated/_sin_r10.F90 \
@@ -905,14 +927,16 @@ generated/_mod_r8.F90 \
generated/_mod_r10.F90 \
generated/_mod_r16.F90
+gfor_misc_specifics = generated/misc_specifics.F90
gfor_specific_src = \
$(gfor_built_specific_src) \
$(gfor_built_specific2_src) \
+$(gfor_misc_specifics) \
intrinsics/dprod_r8.f90 \
intrinsics/f2c_specifics.F90
BUILT_SOURCES = $(gfor_built_src) $(gfor_built_specific_src) \
- $(gfor_built_specific2_src)
+ $(gfor_built_specific2_src) $(gfor_misc_specifics)
libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
$(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_src)
@@ -1083,6 +1107,18 @@ _abs_r10.lo: generated/_abs_r10.F90
_abs_r16.lo: generated/_abs_r16.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _abs_r16.lo `test -f 'generated/_abs_r16.F90' || echo '$(srcdir)/'`generated/_abs_r16.F90
+_aimag_c4.lo: generated/_aimag_c4.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _aimag_c4.lo `test -f 'generated/_aimag_c4.F90' || echo '$(srcdir)/'`generated/_aimag_c4.F90
+
+_aimag_c8.lo: generated/_aimag_c8.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _aimag_c8.lo `test -f 'generated/_aimag_c8.F90' || echo '$(srcdir)/'`generated/_aimag_c8.F90
+
+_aimag_c10.lo: generated/_aimag_c10.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _aimag_c10.lo `test -f 'generated/_aimag_c10.F90' || echo '$(srcdir)/'`generated/_aimag_c10.F90
+
+_aimag_c16.lo: generated/_aimag_c16.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _aimag_c16.lo `test -f 'generated/_aimag_c16.F90' || echo '$(srcdir)/'`generated/_aimag_c16.F90
+
_exp_r4.lo: generated/_exp_r4.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _exp_r4.lo `test -f 'generated/_exp_r4.F90' || echo '$(srcdir)/'`generated/_exp_r4.F90
@@ -1179,6 +1215,18 @@ _asin_r10.lo: generated/_asin_r10.F90
_asin_r16.lo: generated/_asin_r16.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _asin_r16.lo `test -f 'generated/_asin_r16.F90' || echo '$(srcdir)/'`generated/_asin_r16.F90
+_asinh_r4.lo: generated/_asinh_r4.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _asinh_r4.lo `test -f 'generated/_asinh_r4.F90' || echo '$(srcdir)/'`generated/_asinh_r4.F90
+
+_asinh_r8.lo: generated/_asinh_r8.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _asinh_r8.lo `test -f 'generated/_asinh_r8.F90' || echo '$(srcdir)/'`generated/_asinh_r8.F90
+
+_asinh_r10.lo: generated/_asinh_r10.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _asinh_r10.lo `test -f 'generated/_asinh_r10.F90' || echo '$(srcdir)/'`generated/_asinh_r10.F90
+
+_asinh_r16.lo: generated/_asinh_r16.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _asinh_r16.lo `test -f 'generated/_asinh_r16.F90' || echo '$(srcdir)/'`generated/_asinh_r16.F90
+
_acos_r4.lo: generated/_acos_r4.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _acos_r4.lo `test -f 'generated/_acos_r4.F90' || echo '$(srcdir)/'`generated/_acos_r4.F90
@@ -1191,6 +1239,18 @@ _acos_r10.lo: generated/_acos_r10.F90
_acos_r16.lo: generated/_acos_r16.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _acos_r16.lo `test -f 'generated/_acos_r16.F90' || echo '$(srcdir)/'`generated/_acos_r16.F90
+_acosh_r4.lo: generated/_acosh_r4.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _acosh_r4.lo `test -f 'generated/_acosh_r4.F90' || echo '$(srcdir)/'`generated/_acosh_r4.F90
+
+_acosh_r8.lo: generated/_acosh_r8.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _acosh_r8.lo `test -f 'generated/_acosh_r8.F90' || echo '$(srcdir)/'`generated/_acosh_r8.F90
+
+_acosh_r10.lo: generated/_acosh_r10.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _acosh_r10.lo `test -f 'generated/_acosh_r10.F90' || echo '$(srcdir)/'`generated/_acosh_r10.F90
+
+_acosh_r16.lo: generated/_acosh_r16.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _acosh_r16.lo `test -f 'generated/_acosh_r16.F90' || echo '$(srcdir)/'`generated/_acosh_r16.F90
+
_atan_r4.lo: generated/_atan_r4.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _atan_r4.lo `test -f 'generated/_atan_r4.F90' || echo '$(srcdir)/'`generated/_atan_r4.F90
@@ -1203,6 +1263,18 @@ _atan_r10.lo: generated/_atan_r10.F90
_atan_r16.lo: generated/_atan_r16.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _atan_r16.lo `test -f 'generated/_atan_r16.F90' || echo '$(srcdir)/'`generated/_atan_r16.F90
+_atanh_r4.lo: generated/_atanh_r4.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _atanh_r4.lo `test -f 'generated/_atanh_r4.F90' || echo '$(srcdir)/'`generated/_atanh_r4.F90
+
+_atanh_r8.lo: generated/_atanh_r8.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _atanh_r8.lo `test -f 'generated/_atanh_r8.F90' || echo '$(srcdir)/'`generated/_atanh_r8.F90
+
+_atanh_r10.lo: generated/_atanh_r10.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _atanh_r10.lo `test -f 'generated/_atanh_r10.F90' || echo '$(srcdir)/'`generated/_atanh_r10.F90
+
+_atanh_r16.lo: generated/_atanh_r16.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _atanh_r16.lo `test -f 'generated/_atanh_r16.F90' || echo '$(srcdir)/'`generated/_atanh_r16.F90
+
_sin_r4.lo: generated/_sin_r4.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _sin_r4.lo `test -f 'generated/_sin_r4.F90' || echo '$(srcdir)/'`generated/_sin_r4.F90
@@ -1410,6 +1482,9 @@ _mod_r10.lo: generated/_mod_r10.F90
_mod_r16.lo: generated/_mod_r16.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o _mod_r16.lo `test -f 'generated/_mod_r16.F90' || echo '$(srcdir)/'`generated/_mod_r16.F90
+misc_specifics.lo: generated/misc_specifics.F90
+ $(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o misc_specifics.lo `test -f 'generated/misc_specifics.F90' || echo '$(srcdir)/'`generated/misc_specifics.F90
+
f2c_specifics.lo: intrinsics/f2c_specifics.F90
$(LIBTOOL) --mode=compile $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) -c -o f2c_specifics.lo `test -f 'intrinsics/f2c_specifics.F90' || echo '$(srcdir)/'`intrinsics/f2c_specifics.F90
@@ -2844,6 +2919,9 @@ fpu-target.h: $(srcdir)/$(FPU_HOST_HEADER)
@MAINTAINER_MODE_TRUE@$(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
@MAINTAINER_MODE_TRUE@ $(M4) -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $(srcdir)/$@
+
+@MAINTAINER_MODE_TRUE@$(gfor_misc_specifics): m4/misc_specifics.m4 m4/head.m4
+@MAINTAINER_MODE_TRUE@ m4 -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $(srcdir)/$@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/libgfortran/generated/_acosh_r10.F90 b/libgfortran/generated/_acosh_r10.F90
new file mode 100644
index 0000000..07bc332
--- /dev/null
+++ b/libgfortran/generated/_acosh_r10.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_10)
+#ifdef HAVE_ACOSHL
+
+elemental function specific__acosh_r10 (parm)
+ real (kind=10), intent (in) :: parm
+ real (kind=10) :: specific__acosh_r10
+
+ specific__acosh_r10 = acosh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_acosh_r16.F90 b/libgfortran/generated/_acosh_r16.F90
new file mode 100644
index 0000000..295a366
--- /dev/null
+++ b/libgfortran/generated/_acosh_r16.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_16)
+#ifdef HAVE_ACOSHL
+
+elemental function specific__acosh_r16 (parm)
+ real (kind=16), intent (in) :: parm
+ real (kind=16) :: specific__acosh_r16
+
+ specific__acosh_r16 = acosh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_acosh_r4.F90 b/libgfortran/generated/_acosh_r4.F90
new file mode 100644
index 0000000..717ce40
--- /dev/null
+++ b/libgfortran/generated/_acosh_r4.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_4)
+#ifdef HAVE_ACOSHF
+
+elemental function specific__acosh_r4 (parm)
+ real (kind=4), intent (in) :: parm
+ real (kind=4) :: specific__acosh_r4
+
+ specific__acosh_r4 = acosh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_acosh_r8.F90 b/libgfortran/generated/_acosh_r8.F90
new file mode 100644
index 0000000..d03c73b
--- /dev/null
+++ b/libgfortran/generated/_acosh_r8.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_8)
+#ifdef HAVE_ACOSH
+
+elemental function specific__acosh_r8 (parm)
+ real (kind=8), intent (in) :: parm
+ real (kind=8) :: specific__acosh_r8
+
+ specific__acosh_r8 = acosh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_aimag_c10.F90 b/libgfortran/generated/_aimag_c10.F90
new file mode 100644
index 0000000..d6a6f0b
--- /dev/null
+++ b/libgfortran/generated/_aimag_c10.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_COMPLEX_10)
+
+
+elemental function specific__aimag_c10 (parm)
+ complex (kind=10), intent (in) :: parm
+ real (kind=10) :: specific__aimag_c10
+
+ specific__aimag_c10 = aimag (parm)
+end function
+
+
+#endif
diff --git a/libgfortran/generated/_aimag_c16.F90 b/libgfortran/generated/_aimag_c16.F90
new file mode 100644
index 0000000..717f820
--- /dev/null
+++ b/libgfortran/generated/_aimag_c16.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_COMPLEX_16)
+
+
+elemental function specific__aimag_c16 (parm)
+ complex (kind=16), intent (in) :: parm
+ real (kind=16) :: specific__aimag_c16
+
+ specific__aimag_c16 = aimag (parm)
+end function
+
+
+#endif
diff --git a/libgfortran/generated/_aimag_c4.F90 b/libgfortran/generated/_aimag_c4.F90
new file mode 100644
index 0000000..241e7b9
--- /dev/null
+++ b/libgfortran/generated/_aimag_c4.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_COMPLEX_4)
+
+
+elemental function specific__aimag_c4 (parm)
+ complex (kind=4), intent (in) :: parm
+ real (kind=4) :: specific__aimag_c4
+
+ specific__aimag_c4 = aimag (parm)
+end function
+
+
+#endif
diff --git a/libgfortran/generated/_aimag_c8.F90 b/libgfortran/generated/_aimag_c8.F90
new file mode 100644
index 0000000..76ad7e9
--- /dev/null
+++ b/libgfortran/generated/_aimag_c8.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_COMPLEX_8)
+
+
+elemental function specific__aimag_c8 (parm)
+ complex (kind=8), intent (in) :: parm
+ real (kind=8) :: specific__aimag_c8
+
+ specific__aimag_c8 = aimag (parm)
+end function
+
+
+#endif
diff --git a/libgfortran/generated/_asinh_r10.F90 b/libgfortran/generated/_asinh_r10.F90
new file mode 100644
index 0000000..c6a791b
--- /dev/null
+++ b/libgfortran/generated/_asinh_r10.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_10)
+#ifdef HAVE_ASINHL
+
+elemental function specific__asinh_r10 (parm)
+ real (kind=10), intent (in) :: parm
+ real (kind=10) :: specific__asinh_r10
+
+ specific__asinh_r10 = asinh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_asinh_r16.F90 b/libgfortran/generated/_asinh_r16.F90
new file mode 100644
index 0000000..3b2a28b
--- /dev/null
+++ b/libgfortran/generated/_asinh_r16.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_16)
+#ifdef HAVE_ASINHL
+
+elemental function specific__asinh_r16 (parm)
+ real (kind=16), intent (in) :: parm
+ real (kind=16) :: specific__asinh_r16
+
+ specific__asinh_r16 = asinh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_asinh_r4.F90 b/libgfortran/generated/_asinh_r4.F90
new file mode 100644
index 0000000..de47515
--- /dev/null
+++ b/libgfortran/generated/_asinh_r4.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_4)
+#ifdef HAVE_ASINHF
+
+elemental function specific__asinh_r4 (parm)
+ real (kind=4), intent (in) :: parm
+ real (kind=4) :: specific__asinh_r4
+
+ specific__asinh_r4 = asinh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_asinh_r8.F90 b/libgfortran/generated/_asinh_r8.F90
new file mode 100644
index 0000000..0a6d0bd
--- /dev/null
+++ b/libgfortran/generated/_asinh_r8.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_8)
+#ifdef HAVE_ASINH
+
+elemental function specific__asinh_r8 (parm)
+ real (kind=8), intent (in) :: parm
+ real (kind=8) :: specific__asinh_r8
+
+ specific__asinh_r8 = asinh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_atanh_r10.F90 b/libgfortran/generated/_atanh_r10.F90
new file mode 100644
index 0000000..75cdf99
--- /dev/null
+++ b/libgfortran/generated/_atanh_r10.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_10)
+#ifdef HAVE_ATANHL
+
+elemental function specific__atanh_r10 (parm)
+ real (kind=10), intent (in) :: parm
+ real (kind=10) :: specific__atanh_r10
+
+ specific__atanh_r10 = atanh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_atanh_r16.F90 b/libgfortran/generated/_atanh_r16.F90
new file mode 100644
index 0000000..bc6e71c
--- /dev/null
+++ b/libgfortran/generated/_atanh_r16.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_16)
+#ifdef HAVE_ATANHL
+
+elemental function specific__atanh_r16 (parm)
+ real (kind=16), intent (in) :: parm
+ real (kind=16) :: specific__atanh_r16
+
+ specific__atanh_r16 = atanh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_atanh_r4.F90 b/libgfortran/generated/_atanh_r4.F90
new file mode 100644
index 0000000..edbd419
--- /dev/null
+++ b/libgfortran/generated/_atanh_r4.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_4)
+#ifdef HAVE_ATANHF
+
+elemental function specific__atanh_r4 (parm)
+ real (kind=4), intent (in) :: parm
+ real (kind=4) :: specific__atanh_r4
+
+ specific__atanh_r4 = atanh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/_atanh_r8.F90 b/libgfortran/generated/_atanh_r8.F90
new file mode 100644
index 0000000..05dd808
--- /dev/null
+++ b/libgfortran/generated/_atanh_r8.F90
@@ -0,0 +1,51 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+
+
+
+
+#include "config.h"
+#include "kinds.inc"
+#include "c99_protos.inc"
+
+#if defined (HAVE_GFC_REAL_8)
+#ifdef HAVE_ATANH
+
+elemental function specific__atanh_r8 (parm)
+ real (kind=8), intent (in) :: parm
+ real (kind=8) :: specific__atanh_r8
+
+ specific__atanh_r8 = atanh (parm)
+end function
+
+#endif
+#endif
diff --git a/libgfortran/generated/misc_specifics.F90 b/libgfortran/generated/misc_specifics.F90
new file mode 100644
index 0000000..a3b103b
--- /dev/null
+++ b/libgfortran/generated/misc_specifics.F90
@@ -0,0 +1,211 @@
+! Copyright 2002 Free Software Foundation, Inc.
+! Contributed by Paul Brook <paul@nowt.org>
+!
+!This file is part of the GNU Fortran 95 runtime library (libgfortran).
+!
+!GNU 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 2 of the License, or (at your option) any later version.
+
+!In addition to the permissions in the GNU General Public License, the
+!Free Software Foundation gives you unlimited permission to link the
+!compiled version of this file into combinations with other programs,
+!and to distribute those combinations without any restriction coming
+!from the use of this file. (The General Public License restrictions
+!do apply in other respects; for example, they cover modification of
+!the file, and distribution when not linked into a combine
+!executable.)
+!
+!GNU 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.
+!
+!You should have received a copy of the GNU General Public
+!License along with libgfortran; see the file COPYING. If not,
+!write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+!Boston, MA 02110-1301, USA.
+!
+!This file is machine generated.
+
+#include "config.h"
+#include "kinds.inc"
+
+
+
+
+#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
+elemental function specific__nint_4_4 (parm)
+ real (kind=4) , intent (in) :: parm
+ integer (kind=4) :: specific__nint_4_4
+ specific__nint_4_4 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
+elemental function specific__nint_4_8 (parm)
+ real (kind=8) , intent (in) :: parm
+ integer (kind=4) :: specific__nint_4_8
+ specific__nint_4_8 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
+elemental function specific__nint_4_10 (parm)
+ real (kind=10) , intent (in) :: parm
+ integer (kind=4) :: specific__nint_4_10
+ specific__nint_4_10 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
+elemental function specific__nint_4_16 (parm)
+ real (kind=16) , intent (in) :: parm
+ integer (kind=4) :: specific__nint_4_16
+ specific__nint_4_16 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
+elemental function specific__nint_8_4 (parm)
+ real (kind=4) , intent (in) :: parm
+ integer (kind=8) :: specific__nint_8_4
+ specific__nint_8_4 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
+elemental function specific__nint_8_8 (parm)
+ real (kind=8) , intent (in) :: parm
+ integer (kind=8) :: specific__nint_8_8
+ specific__nint_8_8 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
+elemental function specific__nint_8_10 (parm)
+ real (kind=10) , intent (in) :: parm
+ integer (kind=8) :: specific__nint_8_10
+ specific__nint_8_10 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
+elemental function specific__nint_8_16 (parm)
+ real (kind=16) , intent (in) :: parm
+ integer (kind=8) :: specific__nint_8_16
+ specific__nint_8_16 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
+elemental function specific__nint_16_4 (parm)
+ real (kind=4) , intent (in) :: parm
+ integer (kind=16) :: specific__nint_16_4
+ specific__nint_16_4 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
+elemental function specific__nint_16_8 (parm)
+ real (kind=8) , intent (in) :: parm
+ integer (kind=16) :: specific__nint_16_8
+ specific__nint_16_8 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
+elemental function specific__nint_16_10 (parm)
+ real (kind=10) , intent (in) :: parm
+ integer (kind=16) :: specific__nint_16_10
+ specific__nint_16_10 = nint (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
+elemental function specific__nint_16_16 (parm)
+ real (kind=16) , intent (in) :: parm
+ integer (kind=16) :: specific__nint_16_16
+ specific__nint_16_16 = nint (parm)
+end function
+#endif
+
+
+
+#if defined (HAVE_GFC_INTEGER_4)
+elemental function specific__char_1_i4 (parm)
+ integer (kind=4) , intent (in) :: parm
+ character (kind=1,len=1) :: specific__char_1_i4
+ specific__char_1_i4 = char (parm, kind=1)
+end function
+#endif
+
+#if defined (HAVE_GFC_INTEGER_8)
+elemental function specific__char_1_i8 (parm)
+ integer (kind=8) , intent (in) :: parm
+ character (kind=1,len=1) :: specific__char_1_i8
+ specific__char_1_i8 = char (parm, kind=1)
+end function
+#endif
+
+#if defined (HAVE_GFC_INTEGER_16)
+elemental function specific__char_1_i16 (parm)
+ integer (kind=16) , intent (in) :: parm
+ character (kind=1,len=1) :: specific__char_1_i16
+ specific__char_1_i16 = char (parm, kind=1)
+end function
+#endif
+
+
+
+#if defined (HAVE_GFC_INTEGER_4)
+elemental function specific__len_1_i4 (parm)
+ character (kind=1,len=*) , intent (in) :: parm
+ integer (kind=4) :: specific__len_1_i4
+ specific__len_1_i4 = len (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_INTEGER_8)
+elemental function specific__len_1_i8 (parm)
+ character (kind=1,len=*) , intent (in) :: parm
+ integer (kind=8) :: specific__len_1_i8
+ specific__len_1_i8 = len (parm)
+end function
+#endif
+
+#if defined (HAVE_GFC_INTEGER_16)
+elemental function specific__len_1_i16 (parm)
+ character (kind=1,len=*) , intent (in) :: parm
+ integer (kind=16) :: specific__len_1_i16
+ specific__len_1_i16 = len (parm)
+end function
+#endif
+
+
+
+#if defined (HAVE_GFC_INTEGER_4)
+elemental function specific__index_1_i4 (parm1, parm2)
+ character (kind=1,len=*) , intent (in) :: parm1, parm2
+ integer (kind=4) :: specific__index_1_i4
+ specific__index_1_i4 = index (parm1, parm2)
+end function
+#endif
+
+#if defined (HAVE_GFC_INTEGER_8)
+elemental function specific__index_1_i8 (parm1, parm2)
+ character (kind=1,len=*) , intent (in) :: parm1, parm2
+ integer (kind=8) :: specific__index_1_i8
+ specific__index_1_i8 = index (parm1, parm2)
+end function
+#endif
+
+#if defined (HAVE_GFC_INTEGER_16)
+elemental function specific__index_1_i16 (parm1, parm2)
+ character (kind=1,len=*) , intent (in) :: parm1, parm2
+ integer (kind=16) :: specific__index_1_i16
+ specific__index_1_i16 = index (parm1, parm2)
+end function
+#endif
+
diff --git a/libgfortran/intrinsics/f2c_specifics.F90 b/libgfortran/intrinsics/f2c_specifics.F90
index 6fdcfe9..c3f906d 100644
--- a/libgfortran/intrinsics/f2c_specifics.F90
+++ b/libgfortran/intrinsics/f2c_specifics.F90
@@ -69,6 +69,7 @@ end subroutine
REAL_HEAD(abs)
REAL_BODY(abs)
+
! abs is special in that the result is real
elemental function f2c_specific__abs_c4 (parm) result (res)
COMPLEX, intent(in) :: parm
@@ -76,6 +77,21 @@ elemental function f2c_specific__abs_c4 (parm) result (res)
res = abs(parm)
end function
+
+! aimag is special in that the result is real
+elemental function f2c_specific__aimag_c4 (parm)
+ complex(kind=4), intent(in) :: parm
+ double precision :: f2c_specific__aimag_c4
+ f2c_specific__aimag_c4 = aimag(parm)
+end function
+
+elemental function f2c_specific__aimag_c8 (parm)
+ complex(kind=8), intent(in) :: parm
+ double precision :: f2c_specific__aimag_c8
+ f2c_specific__aimag_c8 = aimag(parm)
+end function
+
+
REAL_HEAD(exp)
REAL_BODY(exp)
COMPLEX_HEAD(exp)
@@ -109,6 +125,15 @@ REAL_BODY(acos)
REAL_HEAD(atan)
REAL_BODY(atan)
+REAL_HEAD(asinh)
+REAL_BODY(asinh)
+
+REAL_HEAD(acosh)
+REAL_BODY(acosh)
+
+REAL_HEAD(atanh)
+REAL_BODY(atanh)
+
REAL_HEAD(sin)
REAL_BODY(sin)
COMPLEX_HEAD(sin)
diff --git a/libgfortran/m4/misc_specifics.m4 b/libgfortran/m4/misc_specifics.m4
new file mode 100644
index 0000000..dff63d8
--- /dev/null
+++ b/libgfortran/m4/misc_specifics.m4
@@ -0,0 +1,64 @@
+include(head.m4)dnl
+dnl
+dnl This file contains the specific functions that are not handled in the
+dnl m4/specific.m4 file.
+
+#include "config.h"
+#include "kinds.inc"
+
+dnl This is from GNU m4 examples file foreach.m4:
+divert(-1)
+# foreach(x, (item_1, item_2, ..., item_n), stmt)
+define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2',
+`$3')popdef(`$1')')
+define(`_arg1', `$1')
+define(`_foreach',
+ `ifelse(`$2', `()', ,
+ `define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2),
+`$3')')')
+# traceon(`define', `foreach', `_foreach', `ifelse')
+divert
+
+dnl NINT specifics
+foreach(`ikind', `(4, 8, 16)', `foreach(`rkind', `(4, 8, 10, 16)', `
+`#if defined (HAVE_GFC_REAL_'rkind`) && defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function specific__nint_`'ikind`_'rkind (parm)
+ real (kind=rkind) , intent (in) :: parm
+ integer (kind=ikind) :: specific__nint_`'ikind`_'rkind
+ specific__nint_`'ikind`_'rkind = nint (parm)
+end function
+#endif
+')')
+
+dnl CHAR specifics
+foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
+`#if defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function specific__char_`'ckind`_i'ikind (parm)
+ integer (kind=ikind) , intent (in) :: parm
+ character (kind=ckind,len=1) :: specific__char_`'ckind`_i'ikind
+ specific__char_`'ckind`_i'ikind` = char (parm, kind='ckind`)'
+end function
+#endif
+')')
+
+dnl LEN specifics
+foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
+`#if defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function specific__len_`'ckind`_i'ikind (parm)
+ character (kind=ckind,len=*) , intent (in) :: parm
+ integer (kind=ikind) :: specific__len_`'ckind`_i'ikind
+ specific__len_`'ckind`_i'ikind` = len (parm)'
+end function
+#endif
+')')
+
+dnl INDEX specifics
+foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
+`#if defined (HAVE_GFC_INTEGER_'ikind`)'
+elemental function specific__index_`'ckind`_i'ikind (parm1, parm2)
+ character (kind=ckind,len=*) , intent (in) :: parm1, parm2
+ integer (kind=ikind) :: specific__index_`'ckind`_i'ikind
+ specific__index_`'ckind`_i'ikind` = index (parm1, parm2)'
+end function
+#endif
+')')
diff --git a/libgfortran/m4/specific.m4 b/libgfortran/m4/specific.m4
index a0d03dc..c8c9152 100644
--- a/libgfortran/m4/specific.m4
+++ b/libgfortran/m4/specific.m4
@@ -6,7 +6,7 @@ define(get_typename2, `$1 (kind=$2)')dnl
define(get_typename, `get_typename2(ifelse($1,i,integer,ifelse($1,r,real,ifelse($1,l,logical,ifelse($1,c,complex,unknown)))),`$2')')dnl
define(atype_name, get_typename(atype_letter,atype_kind))dnl
define(name, regexp(regexp(file, `[^/]*$', `\&'), `^_\([^_]*\)_', `\1'))dnl
-define(rtype_name,get_typename(ifelse(name,abs,ifelse(atype_letter,c,r,atype_letter),atype_letter),atype_kind))dnl
+define(rtype_name,get_typename(ifelse(name,abs,ifelse(atype_letter,c,r,atype_letter),ifelse(name,aimag,ifelse(atype_letter,c,r,atype_letter),atype_letter)),atype_kind))dnl
define(function_name,ifelse(name,conjg,`specific__conjg_'atype_kind,`specific__'name`_'atype_code))dnl
define(type,ifelse(atype_letter,l,LOGICAL,ifelse(atype_letter,i,INTEGER,ifelse(atype_letter,r,REAL,ifelse(atype_letter,c,COMPLEX,UNKNOW)))))dnl
@@ -17,8 +17,8 @@ dnl nothing. The list is currently:
dnl - integer and logical specifics require no libm function
dnl - AINT requires the trunc() family functions
dnl - ANINT requires round()
-dnl - CONJG, DIM, SIGN require no libm function
-define(needed,ifelse(atype_letter,i,`none',ifelse(atype_letter,l,`none',ifelse(name,aint,trunc,ifelse(name,anint,round,ifelse(name,conjg,none,ifelse(name,dim,none,ifelse(name,sign,none,ifelse(name,abs,fabs,name)))))))))dnl
+dnl - AIMAG, CONJG, DIM, SIGN require no libm function
+define(needed,ifelse(atype_letter,i,`none',ifelse(atype_letter,l,`none',ifelse(name,aint,trunc,ifelse(name,anint,round,ifelse(name,aimag,none,ifelse(name,conjg,none,ifelse(name,dim,none,ifelse(name,sign,none,ifelse(name,abs,fabs,name))))))))))dnl
define(prefix,ifelse(atype_letter,c,C,`'))dnl
dnl Special case for fabs, for which the corresponding complex function