[patch] Fix intrinsics for kind=1 and kind=2, m4 generation

Thomas Koenig Thomas.Koenig@online.de
Fri Feb 16 21:57:00 GMT 2007


:ADDPATCH fortran:

Hello world,

this fixes some intrinsics for which kind=1 and kind=2 integer types
were missing by generating the missing functions from m4 templates.
The type coercion for minval and maxval is removed.

Also, the m4 generation errors are fixed by explicitly placing
the generated files into $(srcdir), where they belong.

OK for trunk?  What about 4.2?

	Thomas

2007-02-16  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30533
	PR libfortran/30765
	* Makefile.am: Add $(srcdir) too all files in generated/.
	(i_maxloc0_c): Add maxloc0_4_i1.c, maxloc0_8_i1.c,
	maxloc0_16_i1.c, maxloc0_4_i2.c, maxloc0_8_i2.c and
	maxloc0_16_i2.c.
	(i_maxloc1_c): Add maxloc1_4_i1.c, maxloc1_8_i1.c,
	maxloc1_16_i1.c, maxloc1_4_i2.c, maxloc1_8_i2.c and
	maxloc1_16_i2.c.
	(i_maxval_c): Add maxval_i1.c and maxval_i2.c.
	(i_minloc0_c):  Add minloc0_4_i1.c, minloc0_8_i1.c,
	minloc0_16_i1.c, minloc0_4_i2.c, minloc0_8_i2.c and
	minloc0_16_i2.c.
	(i_minloc_1.c): Add minloc1_4_i1.c, minloc1_8_i1.c,
	minloc1_16_i1.c, minloc1_4_i2.c, minloc1_8_i2.c and
	minloc1_16_i2.c.
	(i_minval_c):  Add minval_i1.c and minval_i2.c.
	(i_sum_c):  Add sum_i1.c and sum_i2.c.
	(i_product_c):  Add product_i1.c and product_i2.c.
	(i_matmul_c):  Add matmul_i1.c and matmul_i2.c.
	(gfor_built_specific_src):  Remove $(srcdir) from target.
	(gfor_bulit_specific2_src):  Likewise.
	Makefile.in:  Regenerated.
	libgfortran.h:  Add GFC_INTEGER_1_HUGE and GFC_INTEGER_2_HUGE.
	Add gfc_array_i1 and gfc_array_i2.
	* generated/matmul_i1.c: New file.
	* generated/matmul_i2.c: New file.
	* generated/maxloc0_16_i1.c: New file.
	* generated/maxloc0_16_i2.c: New file.
	* generated/maxloc0_4_i1.c: New file.
	* generated/maxloc0_4_i2.c: New file.
	* generated/maxloc0_8_i1.c: New file.
	* generated/maxloc0_8_i2.c: New file.
	* generated/maxloc1_16_i1.c: New file.
	* generated/maxloc1_16_i2.c: New file.
	* generated/maxloc1_4_i1.c: New file.
	* generated/maxloc1_4_i2.c: New file.
	* generated/maxloc1_8_i1.c: New file.
	* generated/maxloc1_8_i2.c: New file.
	* generated/maxval_i1.c: New file.
	* generated/maxval_i2.c: New file.
	* generated/minloc0_16_i1.c: New file.
	* generated/minloc0_16_i2.c: New file.
	* generated/minloc0_4_i1.c: New file.
	* generated/minloc0_4_i2.c: New file.
	* generated/minloc0_8_i1.c: New file.
	* generated/minloc0_8_i2.c: New file.
	* generated/minloc1_16_i1.c: New file.
	* generated/minloc1_16_i2.c: New file.
	* generated/minloc1_4_i1.c: New file.
	* generated/minloc1_4_i2.c: New file.
	* generated/minloc1_8_i1.c: New file.
	* generated/minloc1_8_i2.c: New file.
	* generated/minval_i1.c: New file.
	* generated/minval_i2.c: New file.
	* generated/product_i1.c: New file.
	* generated/product_i2.c: New file.
	* generated/sum_i1.c: New file.
	* generated/sum_i2.c: New file.

2007-02-16  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30533
	* fortran/iresolve.c(gfc_resolve_maxloc):  Remove coercion of
	argument to default integer.
	(gfc_resolve_minloc):  Likewise.

2007-02-16  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30533
	* gfortran.dg/intrinsic_intkinds_1.f90:  New test.
-------------- next part --------------
Index: libgfortran/Makefile.am
===================================================================
--- libgfortran/Makefile.am	(revision 122049)
+++ libgfortran/Makefile.am	(working copy)
@@ -109,314 +109,348 @@ runtime/string.c \
 runtime/select.c
 
 i_all_c= \
-generated/all_l4.c \
-generated/all_l8.c \
-generated/all_l16.c
+$(srcdir)/generated/all_l4.c \
+$(srcdir)/generated/all_l8.c \
+$(srcdir)/generated/all_l16.c
 
 i_any_c= \
-generated/any_l4.c \
-generated/any_l8.c \
-generated/any_l16.c
+$(srcdir)/generated/any_l4.c \
+$(srcdir)/generated/any_l8.c \
+$(srcdir)/generated/any_l16.c
 
 i_count_c= \
-generated/count_4_l4.c \
-generated/count_8_l4.c \
-generated/count_16_l4.c \
-generated/count_4_l8.c \
-generated/count_8_l8.c \
-generated/count_16_l8.c \
-generated/count_4_l16.c \
-generated/count_8_l16.c \
-generated/count_16_l16.c
+$(srcdir)/generated/count_4_l4.c \
+$(srcdir)/generated/count_8_l4.c \
+$(srcdir)/generated/count_16_l4.c \
+$(srcdir)/generated/count_4_l8.c \
+$(srcdir)/generated/count_8_l8.c \
+$(srcdir)/generated/count_16_l8.c \
+$(srcdir)/generated/count_4_l16.c \
+$(srcdir)/generated/count_8_l16.c \
+$(srcdir)/generated/count_16_l16.c
 
 i_maxloc0_c= \
-generated/maxloc0_4_i4.c \
-generated/maxloc0_8_i4.c \
-generated/maxloc0_16_i4.c \
-generated/maxloc0_4_i8.c \
-generated/maxloc0_8_i8.c \
-generated/maxloc0_16_i8.c \
-generated/maxloc0_4_i16.c \
-generated/maxloc0_8_i16.c \
-generated/maxloc0_16_i16.c \
-generated/maxloc0_4_r4.c \
-generated/maxloc0_8_r4.c \
-generated/maxloc0_16_r4.c \
-generated/maxloc0_4_r8.c \
-generated/maxloc0_8_r8.c \
-generated/maxloc0_16_r8.c \
-generated/maxloc0_4_r10.c \
-generated/maxloc0_8_r10.c \
-generated/maxloc0_16_r10.c \
-generated/maxloc0_4_r16.c \
-generated/maxloc0_8_r16.c \
-generated/maxloc0_16_r16.c
+$(srcdir)/generated/maxloc0_4_i1.c \
+$(srcdir)/generated/maxloc0_8_i1.c \
+$(srcdir)/generated/maxloc0_16_i1.c \
+$(srcdir)/generated/maxloc0_4_i2.c \
+$(srcdir)/generated/maxloc0_8_i2.c \
+$(srcdir)/generated/maxloc0_16_i2.c \
+$(srcdir)/generated/maxloc0_4_i4.c \
+$(srcdir)/generated/maxloc0_8_i4.c \
+$(srcdir)/generated/maxloc0_16_i4.c \
+$(srcdir)/generated/maxloc0_4_i8.c \
+$(srcdir)/generated/maxloc0_8_i8.c \
+$(srcdir)/generated/maxloc0_16_i8.c \
+$(srcdir)/generated/maxloc0_4_i16.c \
+$(srcdir)/generated/maxloc0_8_i16.c \
+$(srcdir)/generated/maxloc0_16_i16.c \
+$(srcdir)/generated/maxloc0_4_r4.c \
+$(srcdir)/generated/maxloc0_8_r4.c \
+$(srcdir)/generated/maxloc0_16_r4.c \
+$(srcdir)/generated/maxloc0_4_r8.c \
+$(srcdir)/generated/maxloc0_8_r8.c \
+$(srcdir)/generated/maxloc0_16_r8.c \
+$(srcdir)/generated/maxloc0_4_r10.c \
+$(srcdir)/generated/maxloc0_8_r10.c \
+$(srcdir)/generated/maxloc0_16_r10.c \
+$(srcdir)/generated/maxloc0_4_r16.c \
+$(srcdir)/generated/maxloc0_8_r16.c \
+$(srcdir)/generated/maxloc0_16_r16.c
 
 i_maxloc1_c= \
-generated/maxloc1_4_i4.c \
-generated/maxloc1_8_i4.c \
-generated/maxloc1_16_i4.c \
-generated/maxloc1_4_i8.c \
-generated/maxloc1_8_i8.c \
-generated/maxloc1_16_i8.c \
-generated/maxloc1_4_i16.c \
-generated/maxloc1_8_i16.c \
-generated/maxloc1_16_i16.c \
-generated/maxloc1_4_r4.c \
-generated/maxloc1_8_r4.c \
-generated/maxloc1_16_r4.c \
-generated/maxloc1_4_r8.c \
-generated/maxloc1_8_r8.c \
-generated/maxloc1_16_r8.c \
-generated/maxloc1_4_r10.c \
-generated/maxloc1_8_r10.c \
-generated/maxloc1_16_r10.c \
-generated/maxloc1_4_r16.c \
-generated/maxloc1_8_r16.c \
-generated/maxloc1_16_r16.c
+$(srcdir)/generated/maxloc1_4_i1.c \
+$(srcdir)/generated/maxloc1_8_i1.c \
+$(srcdir)/generated/maxloc1_16_i1.c \
+$(srcdir)/generated/maxloc1_4_i2.c \
+$(srcdir)/generated/maxloc1_8_i2.c \
+$(srcdir)/generated/maxloc1_16_i2.c \
+$(srcdir)/generated/maxloc1_4_i4.c \
+$(srcdir)/generated/maxloc1_8_i4.c \
+$(srcdir)/generated/maxloc1_16_i4.c \
+$(srcdir)/generated/maxloc1_4_i8.c \
+$(srcdir)/generated/maxloc1_8_i8.c \
+$(srcdir)/generated/maxloc1_16_i8.c \
+$(srcdir)/generated/maxloc1_4_i16.c \
+$(srcdir)/generated/maxloc1_8_i16.c \
+$(srcdir)/generated/maxloc1_16_i16.c \
+$(srcdir)/generated/maxloc1_4_r4.c \
+$(srcdir)/generated/maxloc1_8_r4.c \
+$(srcdir)/generated/maxloc1_16_r4.c \
+$(srcdir)/generated/maxloc1_4_r8.c \
+$(srcdir)/generated/maxloc1_8_r8.c \
+$(srcdir)/generated/maxloc1_16_r8.c \
+$(srcdir)/generated/maxloc1_4_r10.c \
+$(srcdir)/generated/maxloc1_8_r10.c \
+$(srcdir)/generated/maxloc1_16_r10.c \
+$(srcdir)/generated/maxloc1_4_r16.c \
+$(srcdir)/generated/maxloc1_8_r16.c \
+$(srcdir)/generated/maxloc1_16_r16.c
 
 i_maxval_c= \
-generated/maxval_i4.c \
-generated/maxval_i8.c \
-generated/maxval_i16.c \
-generated/maxval_r4.c \
-generated/maxval_r8.c \
-generated/maxval_r10.c \
-generated/maxval_r16.c
+$(srcdir)/generated/maxval_i1.c \
+$(srcdir)/generated/maxval_i2.c \
+$(srcdir)/generated/maxval_i4.c \
+$(srcdir)/generated/maxval_i8.c \
+$(srcdir)/generated/maxval_i16.c \
+$(srcdir)/generated/maxval_r4.c \
+$(srcdir)/generated/maxval_r8.c \
+$(srcdir)/generated/maxval_r10.c \
+$(srcdir)/generated/maxval_r16.c
 
 i_minloc0_c= \
-generated/minloc0_4_i4.c \
-generated/minloc0_8_i4.c \
-generated/minloc0_16_i4.c \
-generated/minloc0_4_i8.c \
-generated/minloc0_8_i8.c \
-generated/minloc0_16_i8.c \
-generated/minloc0_4_i16.c \
-generated/minloc0_8_i16.c \
-generated/minloc0_16_i16.c \
-generated/minloc0_4_r4.c \
-generated/minloc0_8_r4.c \
-generated/minloc0_16_r4.c \
-generated/minloc0_4_r8.c \
-generated/minloc0_8_r8.c \
-generated/minloc0_16_r8.c \
-generated/minloc0_4_r10.c \
-generated/minloc0_8_r10.c \
-generated/minloc0_16_r10.c \
-generated/minloc0_4_r16.c \
-generated/minloc0_8_r16.c \
-generated/minloc0_16_r16.c
+$(srcdir)/generated/minloc0_4_i1.c \
+$(srcdir)/generated/minloc0_8_i1.c \
+$(srcdir)/generated/minloc0_16_i1.c \
+$(srcdir)/generated/minloc0_4_i2.c \
+$(srcdir)/generated/minloc0_8_i2.c \
+$(srcdir)/generated/minloc0_16_i2.c \
+$(srcdir)/generated/minloc0_4_i4.c \
+$(srcdir)/generated/minloc0_8_i4.c \
+$(srcdir)/generated/minloc0_16_i4.c \
+$(srcdir)/generated/minloc0_4_i8.c \
+$(srcdir)/generated/minloc0_8_i8.c \
+$(srcdir)/generated/minloc0_16_i8.c \
+$(srcdir)/generated/minloc0_4_i16.c \
+$(srcdir)/generated/minloc0_8_i16.c \
+$(srcdir)/generated/minloc0_16_i16.c \
+$(srcdir)/generated/minloc0_4_r4.c \
+$(srcdir)/generated/minloc0_8_r4.c \
+$(srcdir)/generated/minloc0_16_r4.c \
+$(srcdir)/generated/minloc0_4_r8.c \
+$(srcdir)/generated/minloc0_8_r8.c \
+$(srcdir)/generated/minloc0_16_r8.c \
+$(srcdir)/generated/minloc0_4_r10.c \
+$(srcdir)/generated/minloc0_8_r10.c \
+$(srcdir)/generated/minloc0_16_r10.c \
+$(srcdir)/generated/minloc0_4_r16.c \
+$(srcdir)/generated/minloc0_8_r16.c \
+$(srcdir)/generated/minloc0_16_r16.c
 
 i_minloc1_c= \
-generated/minloc1_4_i4.c \
-generated/minloc1_8_i4.c \
-generated/minloc1_16_i4.c \
-generated/minloc1_4_i8.c \
-generated/minloc1_8_i8.c \
-generated/minloc1_16_i8.c \
-generated/minloc1_4_i16.c \
-generated/minloc1_8_i16.c \
-generated/minloc1_16_i16.c \
-generated/minloc1_4_r4.c \
-generated/minloc1_8_r4.c \
-generated/minloc1_16_r4.c \
-generated/minloc1_4_r8.c \
-generated/minloc1_8_r8.c \
-generated/minloc1_16_r8.c \
-generated/minloc1_4_r10.c \
-generated/minloc1_8_r10.c \
-generated/minloc1_16_r10.c \
-generated/minloc1_4_r16.c \
-generated/minloc1_8_r16.c \
-generated/minloc1_16_r16.c
+$(srcdir)/generated/minloc1_4_i1.c \
+$(srcdir)/generated/minloc1_8_i1.c \
+$(srcdir)/generated/minloc1_16_i1.c \
+$(srcdir)/generated/minloc1_4_i2.c \
+$(srcdir)/generated/minloc1_8_i2.c \
+$(srcdir)/generated/minloc1_16_i2.c \
+$(srcdir)/generated/minloc1_4_i4.c \
+$(srcdir)/generated/minloc1_8_i4.c \
+$(srcdir)/generated/minloc1_16_i4.c \
+$(srcdir)/generated/minloc1_4_i8.c \
+$(srcdir)/generated/minloc1_8_i8.c \
+$(srcdir)/generated/minloc1_16_i8.c \
+$(srcdir)/generated/minloc1_4_i16.c \
+$(srcdir)/generated/minloc1_8_i16.c \
+$(srcdir)/generated/minloc1_16_i16.c \
+$(srcdir)/generated/minloc1_4_r4.c \
+$(srcdir)/generated/minloc1_8_r4.c \
+$(srcdir)/generated/minloc1_16_r4.c \
+$(srcdir)/generated/minloc1_4_r8.c \
+$(srcdir)/generated/minloc1_8_r8.c \
+$(srcdir)/generated/minloc1_16_r8.c \
+$(srcdir)/generated/minloc1_4_r10.c \
+$(srcdir)/generated/minloc1_8_r10.c \
+$(srcdir)/generated/minloc1_16_r10.c \
+$(srcdir)/generated/minloc1_4_r16.c \
+$(srcdir)/generated/minloc1_8_r16.c \
+$(srcdir)/generated/minloc1_16_r16.c
 
 i_minval_c= \
-generated/minval_i4.c \
-generated/minval_i8.c \
-generated/minval_i16.c \
-generated/minval_r4.c \
-generated/minval_r8.c \
-generated/minval_r10.c \
-generated/minval_r16.c
+$(srcdir)/generated/minval_i1.c \
+$(srcdir)/generated/minval_i2.c \
+$(srcdir)/generated/minval_i4.c \
+$(srcdir)/generated/minval_i8.c \
+$(srcdir)/generated/minval_i16.c \
+$(srcdir)/generated/minval_r4.c \
+$(srcdir)/generated/minval_r8.c \
+$(srcdir)/generated/minval_r10.c \
+$(srcdir)/generated/minval_r16.c
 
 i_sum_c= \
-generated/sum_i4.c \
-generated/sum_i8.c \
-generated/sum_i16.c \
-generated/sum_r4.c \
-generated/sum_r8.c \
-generated/sum_r10.c \
-generated/sum_r16.c \
-generated/sum_c4.c \
-generated/sum_c8.c \
-generated/sum_c10.c \
-generated/sum_c16.c
+$(srcdir)/generated/sum_i1.c \
+$(srcdir)/generated/sum_i2.c \
+$(srcdir)/generated/sum_i4.c \
+$(srcdir)/generated/sum_i8.c \
+$(srcdir)/generated/sum_i16.c \
+$(srcdir)/generated/sum_r4.c \
+$(srcdir)/generated/sum_r8.c \
+$(srcdir)/generated/sum_r10.c \
+$(srcdir)/generated/sum_r16.c \
+$(srcdir)/generated/sum_c4.c \
+$(srcdir)/generated/sum_c8.c \
+$(srcdir)/generated/sum_c10.c \
+$(srcdir)/generated/sum_c16.c
 
 i_product_c= \
-generated/product_i4.c \
-generated/product_i8.c \
-generated/product_i16.c \
-generated/product_r4.c \
-generated/product_r8.c \
-generated/product_r10.c \
-generated/product_r16.c \
-generated/product_c4.c \
-generated/product_c8.c \
-generated/product_c10.c \
-generated/product_c16.c
+$(srcdir)/generated/product_i1.c \
+$(srcdir)/generated/product_i2.c \
+$(srcdir)/generated/product_i4.c \
+$(srcdir)/generated/product_i8.c \
+$(srcdir)/generated/product_i16.c \
+$(srcdir)/generated/product_r4.c \
+$(srcdir)/generated/product_r8.c \
+$(srcdir)/generated/product_r10.c \
+$(srcdir)/generated/product_r16.c \
+$(srcdir)/generated/product_c4.c \
+$(srcdir)/generated/product_c8.c \
+$(srcdir)/generated/product_c10.c \
+$(srcdir)/generated/product_c16.c
 
 i_matmul_c= \
-generated/matmul_i4.c \
-generated/matmul_i8.c \
-generated/matmul_i16.c \
-generated/matmul_r4.c \
-generated/matmul_r8.c \
-generated/matmul_r10.c \
-generated/matmul_r16.c \
-generated/matmul_c4.c \
-generated/matmul_c8.c \
-generated/matmul_c10.c \
-generated/matmul_c16.c
+$(srcdir)/generated/matmul_i1.c \
+$(srcdir)/generated/matmul_i2.c \
+$(srcdir)/generated/matmul_i4.c \
+$(srcdir)/generated/matmul_i8.c \
+$(srcdir)/generated/matmul_i16.c \
+$(srcdir)/generated/matmul_r4.c \
+$(srcdir)/generated/matmul_r8.c \
+$(srcdir)/generated/matmul_r10.c \
+$(srcdir)/generated/matmul_r16.c \
+$(srcdir)/generated/matmul_c4.c \
+$(srcdir)/generated/matmul_c8.c \
+$(srcdir)/generated/matmul_c10.c \
+$(srcdir)/generated/matmul_c16.c
 
 i_matmull_c= \
-generated/matmul_l4.c \
-generated/matmul_l8.c \
-generated/matmul_l16.c
+$(srcdir)/generated/matmul_l4.c \
+$(srcdir)/generated/matmul_l8.c \
+$(srcdir)/generated/matmul_l16.c
 
 i_transpose_c= \
-generated/transpose_i4.c \
-generated/transpose_i8.c \
-generated/transpose_i16.c \
-generated/transpose_r4.c \
-generated/transpose_r8.c \
-generated/transpose_r10.c \
-generated/transpose_r16.c \
-generated/transpose_c4.c \
-generated/transpose_c8.c \
-generated/transpose_c10.c \
-generated/transpose_c16.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= \
-generated/shape_i4.c \
-generated/shape_i8.c \
-generated/shape_i16.c
+$(srcdir)/generated/shape_i4.c \
+$(srcdir)/generated/shape_i8.c \
+$(srcdir)/generated/shape_i16.c
 
 i_reshape_c= \
-generated/reshape_i4.c \
-generated/reshape_i8.c \
-generated/reshape_i16.c \
-generated/reshape_r4.c \
-generated/reshape_r8.c \
-generated/reshape_r10.c \
-generated/reshape_r16.c \
-generated/reshape_c4.c \
-generated/reshape_c8.c \
-generated/reshape_c10.c \
-generated/reshape_c16.c
+$(srcdir)/generated/reshape_i4.c \
+$(srcdir)/generated/reshape_i8.c \
+$(srcdir)/generated/reshape_i16.c \
+$(srcdir)/generated/reshape_r4.c \
+$(srcdir)/generated/reshape_r8.c \
+$(srcdir)/generated/reshape_r10.c \
+$(srcdir)/generated/reshape_r16.c \
+$(srcdir)/generated/reshape_c4.c \
+$(srcdir)/generated/reshape_c8.c \
+$(srcdir)/generated/reshape_c10.c \
+$(srcdir)/generated/reshape_c16.c
 
 i_eoshift1_c= \
-generated/eoshift1_4.c \
-generated/eoshift1_8.c \
-generated/eoshift1_16.c
+$(srcdir)/generated/eoshift1_4.c \
+$(srcdir)/generated/eoshift1_8.c \
+$(srcdir)/generated/eoshift1_16.c
 
 i_eoshift3_c= \
-generated/eoshift3_4.c \
-generated/eoshift3_8.c \
-generated/eoshift3_16.c
+$(srcdir)/generated/eoshift3_4.c \
+$(srcdir)/generated/eoshift3_8.c \
+$(srcdir)/generated/eoshift3_16.c
 
 i_cshift1_c= \
-generated/cshift1_4.c \
-generated/cshift1_8.c \
-generated/cshift1_16.c
+$(srcdir)/generated/cshift1_4.c \
+$(srcdir)/generated/cshift1_8.c \
+$(srcdir)/generated/cshift1_16.c
 
 in_pack_c = \
-generated/in_pack_i4.c \
-generated/in_pack_i8.c \
-generated/in_pack_i16.c \
-generated/in_pack_c4.c \
-generated/in_pack_c8.c \
-generated/in_pack_c10.c \
-generated/in_pack_c16.c
+$(srcdir)/generated/in_pack_i4.c \
+$(srcdir)/generated/in_pack_i8.c \
+$(srcdir)/generated/in_pack_i16.c \
+$(srcdir)/generated/in_pack_c4.c \
+$(srcdir)/generated/in_pack_c8.c \
+$(srcdir)/generated/in_pack_c10.c \
+$(srcdir)/generated/in_pack_c16.c
 
 in_unpack_c = \
-generated/in_unpack_i4.c \
-generated/in_unpack_i8.c \
-generated/in_unpack_i16.c \
-generated/in_unpack_c4.c \
-generated/in_unpack_c8.c \
-generated/in_unpack_c10.c \
-generated/in_unpack_c16.c
+$(srcdir)/generated/in_unpack_i4.c \
+$(srcdir)/generated/in_unpack_i8.c \
+$(srcdir)/generated/in_unpack_i16.c \
+$(srcdir)/generated/in_unpack_c4.c \
+$(srcdir)/generated/in_unpack_c8.c \
+$(srcdir)/generated/in_unpack_c10.c \
+$(srcdir)/generated/in_unpack_c16.c
 
 i_exponent_c = \
-generated/exponent_r4.c \
-generated/exponent_r8.c \
-generated/exponent_r10.c \
-generated/exponent_r16.c
+$(srcdir)/generated/exponent_r4.c \
+$(srcdir)/generated/exponent_r8.c \
+$(srcdir)/generated/exponent_r10.c \
+$(srcdir)/generated/exponent_r16.c
 
 i_spacing_c = \
-generated/spacing_r4.c \
-generated/spacing_r8.c \
-generated/spacing_r10.c \
-generated/spacing_r16.c
+$(srcdir)/generated/spacing_r4.c \
+$(srcdir)/generated/spacing_r8.c \
+$(srcdir)/generated/spacing_r10.c \
+$(srcdir)/generated/spacing_r16.c
 
 i_rrspacing_c = \
-generated/rrspacing_r4.c \
-generated/rrspacing_r8.c \
-generated/rrspacing_r10.c \
-generated/rrspacing_r16.c
+$(srcdir)/generated/rrspacing_r4.c \
+$(srcdir)/generated/rrspacing_r8.c \
+$(srcdir)/generated/rrspacing_r10.c \
+$(srcdir)/generated/rrspacing_r16.c
 
 i_fraction_c = \
-generated/fraction_r4.c \
-generated/fraction_r8.c \
-generated/fraction_r10.c \
-generated/fraction_r16.c
+$(srcdir)/generated/fraction_r4.c \
+$(srcdir)/generated/fraction_r8.c \
+$(srcdir)/generated/fraction_r10.c \
+$(srcdir)/generated/fraction_r16.c
 
 i_nearest_c = \
-generated/nearest_r4.c \
-generated/nearest_r8.c \
-generated/nearest_r10.c \
-generated/nearest_r16.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 = \
-generated/set_exponent_r4.c \
-generated/set_exponent_r8.c \
-generated/set_exponent_r10.c \
-generated/set_exponent_r16.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 = \
-generated/pow_i4_i4.c \
-generated/pow_i8_i4.c \
-generated/pow_i16_i4.c \
-generated/pow_r4_i4.c \
-generated/pow_r8_i4.c \
-generated/pow_r10_i4.c \
-generated/pow_r16_i4.c \
-generated/pow_c4_i4.c \
-generated/pow_c8_i4.c \
-generated/pow_c10_i4.c \
-generated/pow_c16_i4.c \
-generated/pow_i4_i8.c \
-generated/pow_i8_i8.c \
-generated/pow_i16_i8.c \
-generated/pow_r4_i8.c \
-generated/pow_r8_i8.c \
-generated/pow_r10_i8.c \
-generated/pow_r16_i8.c \
-generated/pow_c4_i8.c \
-generated/pow_c8_i8.c \
-generated/pow_c10_i8.c \
-generated/pow_c16_i8.c \
-generated/pow_i4_i16.c \
-generated/pow_i8_i16.c \
-generated/pow_i16_i16.c \
-generated/pow_r4_i16.c \
-generated/pow_r8_i16.c \
-generated/pow_r10_i16.c \
-generated/pow_r16_i16.c \
-generated/pow_c4_i16.c \
-generated/pow_c8_i16.c \
-generated/pow_c10_i16.c \
-generated/pow_c16_i16.c
+$(srcdir)/generated/pow_i4_i4.c \
+$(srcdir)/generated/pow_i8_i4.c \
+$(srcdir)/generated/pow_i16_i4.c \
+$(srcdir)/generated/pow_r4_i4.c \
+$(srcdir)/generated/pow_r8_i4.c \
+$(srcdir)/generated/pow_r10_i4.c \
+$(srcdir)/generated/pow_r16_i4.c \
+$(srcdir)/generated/pow_c4_i4.c \
+$(srcdir)/generated/pow_c8_i4.c \
+$(srcdir)/generated/pow_c10_i4.c \
+$(srcdir)/generated/pow_c16_i4.c \
+$(srcdir)/generated/pow_i4_i8.c \
+$(srcdir)/generated/pow_i8_i8.c \
+$(srcdir)/generated/pow_i16_i8.c \
+$(srcdir)/generated/pow_r4_i8.c \
+$(srcdir)/generated/pow_r8_i8.c \
+$(srcdir)/generated/pow_r10_i8.c \
+$(srcdir)/generated/pow_r16_i8.c \
+$(srcdir)/generated/pow_c4_i8.c \
+$(srcdir)/generated/pow_c8_i8.c \
+$(srcdir)/generated/pow_c10_i8.c \
+$(srcdir)/generated/pow_c16_i8.c \
+$(srcdir)/generated/pow_i4_i16.c \
+$(srcdir)/generated/pow_i8_i16.c \
+$(srcdir)/generated/pow_i16_i16.c \
+$(srcdir)/generated/pow_r4_i16.c \
+$(srcdir)/generated/pow_r8_i16.c \
+$(srcdir)/generated/pow_r10_i16.c \
+$(srcdir)/generated/pow_r16_i16.c \
+$(srcdir)/generated/pow_c4_i16.c \
+$(srcdir)/generated/pow_c8_i16.c \
+$(srcdir)/generated/pow_c10_i16.c \
+$(srcdir)/generated/pow_c16_i16.c
 
 m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
     m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
@@ -440,146 +474,146 @@ gfor_built_src= $(i_all_c) $(i_any_c) $(
 
 # Machine generated specifics
 gfor_built_specific_src= \
-generated/_abs_c4.F90 \
-generated/_abs_c8.F90 \
-generated/_abs_c10.F90 \
-generated/_abs_c16.F90 \
-generated/_abs_i4.F90 \
-generated/_abs_i8.F90 \
-generated/_abs_i16.F90 \
-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 \
-generated/_exp_r16.F90 \
-generated/_exp_c4.F90 \
-generated/_exp_c8.F90 \
-generated/_exp_c10.F90 \
-generated/_exp_c16.F90 \
-generated/_log_r4.F90 \
-generated/_log_r8.F90 \
-generated/_log_r10.F90 \
-generated/_log_r16.F90 \
-generated/_log_c4.F90 \
-generated/_log_c8.F90 \
-generated/_log_c10.F90 \
-generated/_log_c16.F90 \
-generated/_log10_r4.F90 \
-generated/_log10_r8.F90 \
-generated/_log10_r10.F90 \
-generated/_log10_r16.F90 \
-generated/_sqrt_r4.F90 \
-generated/_sqrt_r8.F90 \
-generated/_sqrt_r10.F90 \
-generated/_sqrt_r16.F90 \
-generated/_sqrt_c4.F90 \
-generated/_sqrt_c8.F90 \
-generated/_sqrt_c10.F90 \
-generated/_sqrt_c16.F90 \
-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 \
-generated/_sin_r16.F90 \
-generated/_sin_c4.F90 \
-generated/_sin_c8.F90 \
-generated/_sin_c10.F90 \
-generated/_sin_c16.F90 \
-generated/_cos_r4.F90 \
-generated/_cos_r8.F90 \
-generated/_cos_r10.F90 \
-generated/_cos_r16.F90 \
-generated/_cos_c4.F90 \
-generated/_cos_c8.F90 \
-generated/_cos_c10.F90 \
-generated/_cos_c16.F90 \
-generated/_tan_r4.F90 \
-generated/_tan_r8.F90 \
-generated/_tan_r10.F90 \
-generated/_tan_r16.F90 \
-generated/_sinh_r4.F90 \
-generated/_sinh_r8.F90 \
-generated/_sinh_r10.F90 \
-generated/_sinh_r16.F90 \
-generated/_cosh_r4.F90 \
-generated/_cosh_r8.F90 \
-generated/_cosh_r10.F90 \
-generated/_cosh_r16.F90 \
-generated/_tanh_r4.F90 \
-generated/_tanh_r8.F90 \
-generated/_tanh_r10.F90 \
-generated/_tanh_r16.F90 \
-generated/_conjg_c4.F90 \
-generated/_conjg_c8.F90 \
-generated/_conjg_c10.F90 \
-generated/_conjg_c16.F90 \
-generated/_aint_r4.F90 \
-generated/_aint_r8.F90 \
-generated/_aint_r10.F90 \
-generated/_aint_r16.F90 \
-generated/_anint_r4.F90 \
-generated/_anint_r8.F90 \
-generated/_anint_r10.F90 \
-generated/_anint_r16.F90
+$(srcdir)/generated/_abs_c4.F90 \
+$(srcdir)/generated/_abs_c8.F90 \
+$(srcdir)/generated/_abs_c10.F90 \
+$(srcdir)/generated/_abs_c16.F90 \
+$(srcdir)/generated/_abs_i4.F90 \
+$(srcdir)/generated/_abs_i8.F90 \
+$(srcdir)/generated/_abs_i16.F90 \
+$(srcdir)/generated/_abs_r4.F90 \
+$(srcdir)/generated/_abs_r8.F90 \
+$(srcdir)/generated/_abs_r10.F90 \
+$(srcdir)/generated/_abs_r16.F90 \
+$(srcdir)/generated/_aimag_c4.F90 \
+$(srcdir)/generated/_aimag_c8.F90 \
+$(srcdir)/generated/_aimag_c10.F90 \
+$(srcdir)/generated/_aimag_c16.F90 \
+$(srcdir)/generated/_exp_r4.F90 \
+$(srcdir)/generated/_exp_r8.F90 \
+$(srcdir)/generated/_exp_r10.F90 \
+$(srcdir)/generated/_exp_r16.F90 \
+$(srcdir)/generated/_exp_c4.F90 \
+$(srcdir)/generated/_exp_c8.F90 \
+$(srcdir)/generated/_exp_c10.F90 \
+$(srcdir)/generated/_exp_c16.F90 \
+$(srcdir)/generated/_log_r4.F90 \
+$(srcdir)/generated/_log_r8.F90 \
+$(srcdir)/generated/_log_r10.F90 \
+$(srcdir)/generated/_log_r16.F90 \
+$(srcdir)/generated/_log_c4.F90 \
+$(srcdir)/generated/_log_c8.F90 \
+$(srcdir)/generated/_log_c10.F90 \
+$(srcdir)/generated/_log_c16.F90 \
+$(srcdir)/generated/_log10_r4.F90 \
+$(srcdir)/generated/_log10_r8.F90 \
+$(srcdir)/generated/_log10_r10.F90 \
+$(srcdir)/generated/_log10_r16.F90 \
+$(srcdir)/generated/_sqrt_r4.F90 \
+$(srcdir)/generated/_sqrt_r8.F90 \
+$(srcdir)/generated/_sqrt_r10.F90 \
+$(srcdir)/generated/_sqrt_r16.F90 \
+$(srcdir)/generated/_sqrt_c4.F90 \
+$(srcdir)/generated/_sqrt_c8.F90 \
+$(srcdir)/generated/_sqrt_c10.F90 \
+$(srcdir)/generated/_sqrt_c16.F90 \
+$(srcdir)/generated/_asin_r4.F90 \
+$(srcdir)/generated/_asin_r8.F90 \
+$(srcdir)/generated/_asin_r10.F90 \
+$(srcdir)/generated/_asin_r16.F90 \
+$(srcdir)/generated/_asinh_r4.F90 \
+$(srcdir)/generated/_asinh_r8.F90 \
+$(srcdir)/generated/_asinh_r10.F90 \
+$(srcdir)/generated/_asinh_r16.F90 \
+$(srcdir)/generated/_acos_r4.F90 \
+$(srcdir)/generated/_acos_r8.F90 \
+$(srcdir)/generated/_acos_r10.F90 \
+$(srcdir)/generated/_acos_r16.F90 \
+$(srcdir)/generated/_acosh_r4.F90 \
+$(srcdir)/generated/_acosh_r8.F90 \
+$(srcdir)/generated/_acosh_r10.F90 \
+$(srcdir)/generated/_acosh_r16.F90 \
+$(srcdir)/generated/_atan_r4.F90 \
+$(srcdir)/generated/_atan_r8.F90 \
+$(srcdir)/generated/_atan_r10.F90 \
+$(srcdir)/generated/_atan_r16.F90 \
+$(srcdir)/generated/_atanh_r4.F90 \
+$(srcdir)/generated/_atanh_r8.F90 \
+$(srcdir)/generated/_atanh_r10.F90 \
+$(srcdir)/generated/_atanh_r16.F90 \
+$(srcdir)/generated/_sin_r4.F90 \
+$(srcdir)/generated/_sin_r8.F90 \
+$(srcdir)/generated/_sin_r10.F90 \
+$(srcdir)/generated/_sin_r16.F90 \
+$(srcdir)/generated/_sin_c4.F90 \
+$(srcdir)/generated/_sin_c8.F90 \
+$(srcdir)/generated/_sin_c10.F90 \
+$(srcdir)/generated/_sin_c16.F90 \
+$(srcdir)/generated/_cos_r4.F90 \
+$(srcdir)/generated/_cos_r8.F90 \
+$(srcdir)/generated/_cos_r10.F90 \
+$(srcdir)/generated/_cos_r16.F90 \
+$(srcdir)/generated/_cos_c4.F90 \
+$(srcdir)/generated/_cos_c8.F90 \
+$(srcdir)/generated/_cos_c10.F90 \
+$(srcdir)/generated/_cos_c16.F90 \
+$(srcdir)/generated/_tan_r4.F90 \
+$(srcdir)/generated/_tan_r8.F90 \
+$(srcdir)/generated/_tan_r10.F90 \
+$(srcdir)/generated/_tan_r16.F90 \
+$(srcdir)/generated/_sinh_r4.F90 \
+$(srcdir)/generated/_sinh_r8.F90 \
+$(srcdir)/generated/_sinh_r10.F90 \
+$(srcdir)/generated/_sinh_r16.F90 \
+$(srcdir)/generated/_cosh_r4.F90 \
+$(srcdir)/generated/_cosh_r8.F90 \
+$(srcdir)/generated/_cosh_r10.F90 \
+$(srcdir)/generated/_cosh_r16.F90 \
+$(srcdir)/generated/_tanh_r4.F90 \
+$(srcdir)/generated/_tanh_r8.F90 \
+$(srcdir)/generated/_tanh_r10.F90 \
+$(srcdir)/generated/_tanh_r16.F90 \
+$(srcdir)/generated/_conjg_c4.F90 \
+$(srcdir)/generated/_conjg_c8.F90 \
+$(srcdir)/generated/_conjg_c10.F90 \
+$(srcdir)/generated/_conjg_c16.F90 \
+$(srcdir)/generated/_aint_r4.F90 \
+$(srcdir)/generated/_aint_r8.F90 \
+$(srcdir)/generated/_aint_r10.F90 \
+$(srcdir)/generated/_aint_r16.F90 \
+$(srcdir)/generated/_anint_r4.F90 \
+$(srcdir)/generated/_anint_r8.F90 \
+$(srcdir)/generated/_anint_r10.F90 \
+$(srcdir)/generated/_anint_r16.F90
 
 gfor_built_specific2_src= \
-generated/_sign_i4.F90 \
-generated/_sign_i8.F90 \
-generated/_sign_i16.F90 \
-generated/_sign_r4.F90 \
-generated/_sign_r8.F90 \
-generated/_sign_r10.F90 \
-generated/_sign_r16.F90 \
-generated/_dim_i4.F90 \
-generated/_dim_i8.F90 \
-generated/_dim_i16.F90 \
-generated/_dim_r4.F90 \
-generated/_dim_r8.F90 \
-generated/_dim_r10.F90 \
-generated/_dim_r16.F90 \
-generated/_atan2_r4.F90 \
-generated/_atan2_r8.F90 \
-generated/_atan2_r10.F90 \
-generated/_atan2_r16.F90 \
-generated/_mod_i4.F90 \
-generated/_mod_i8.F90 \
-generated/_mod_i16.F90 \
-generated/_mod_r4.F90 \
-generated/_mod_r8.F90 \
-generated/_mod_r10.F90 \
-generated/_mod_r16.F90
+$(srcdir)/generated/_sign_i4.F90 \
+$(srcdir)/generated/_sign_i8.F90 \
+$(srcdir)/generated/_sign_i16.F90 \
+$(srcdir)/generated/_sign_r4.F90 \
+$(srcdir)/generated/_sign_r8.F90 \
+$(srcdir)/generated/_sign_r10.F90 \
+$(srcdir)/generated/_sign_r16.F90 \
+$(srcdir)/generated/_dim_i4.F90 \
+$(srcdir)/generated/_dim_i8.F90 \
+$(srcdir)/generated/_dim_i16.F90 \
+$(srcdir)/generated/_dim_r4.F90 \
+$(srcdir)/generated/_dim_r8.F90 \
+$(srcdir)/generated/_dim_r10.F90 \
+$(srcdir)/generated/_dim_r16.F90 \
+$(srcdir)/generated/_atan2_r4.F90 \
+$(srcdir)/generated/_atan2_r8.F90 \
+$(srcdir)/generated/_atan2_r10.F90 \
+$(srcdir)/generated/_atan2_r16.F90 \
+$(srcdir)/generated/_mod_i4.F90 \
+$(srcdir)/generated/_mod_i8.F90 \
+$(srcdir)/generated/_mod_i16.F90 \
+$(srcdir)/generated/_mod_r4.F90 \
+$(srcdir)/generated/_mod_r8.F90 \
+$(srcdir)/generated/_mod_r10.F90 \
+$(srcdir)/generated/_mod_r16.F90
 
-gfor_misc_specifics = generated/misc_specifics.F90
+gfor_misc_specifics = $(srcdir)/generated/misc_specifics.F90
 
 gfor_specific_src= \
 $(gfor_built_specific_src) \
@@ -717,13 +751,13 @@ $(i_pow_c): m4/pow.m4 $(I_M4_DEPS)
 	$(M4) -Dfile=$@ -I$(srcdir)/m4 pow.m4 > $@
 
 $(gfor_built_specific_src): m4/specific.m4 m4/head.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific.m4 > $(srcdir)/$@
+	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific.m4 > $@
 
 $(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $(srcdir)/$@
+	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $@
 
 $(gfor_misc_specifics): m4/misc_specifics.m4 m4/head.m4
-	$(M4) -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $(srcdir)/$@
+	$(M4) -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $@
 ## end of maintainer mode only rules
 endif
 
Index: libgfortran/libgfortran.h
===================================================================
--- libgfortran/libgfortran.h	(revision 122049)
+++ libgfortran/libgfortran.h	(working copy)
@@ -224,6 +224,10 @@ internal_proto(l8_to_l4_offset);
 #define GFOR_POINTER_L8_TO_L4(p8) \
   (l8_to_l4_offset + (GFC_LOGICAL_4 *)(p8))
 
+#define GFC_INTEGER_1_HUGE \
+  (GFC_INTEGER_1)((((GFC_UINTEGER_1)1) << 7) - 1)
+#define GFC_INTEGER_2_HUGE \
+  (GFC_INTEGER_2)((((GFC_UINTEGER_2)1) << 15) - 1)
 #define GFC_INTEGER_4_HUGE \
   (GFC_INTEGER_4)((((GFC_UINTEGER_4)1) << 31) - 1)
 #define GFC_INTEGER_8_HUGE \
@@ -283,6 +287,8 @@ struct {\
 /* Commonly used array descriptor types.  */
 typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, void) gfc_array_void;
 typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, char) gfc_array_char;
+typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_1) gfc_array_i1;
+typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_2) gfc_array_i2;
 typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_4) gfc_array_i4;
 typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, GFC_INTEGER_8) gfc_array_i8;
 #ifdef HAVE_GFC_INTEGER_16
Index: gcc/fortran/iresolve.c
===================================================================
--- gcc/fortran/iresolve.c	(revision 122049)
+++ gcc/fortran/iresolve.c	(working copy)
@@ -1231,19 +1231,6 @@ gfc_resolve_maxloc (gfc_expr *f, gfc_exp
   else
     name = "maxloc";
 
-  /* If the rank of the function is nonzero, we are going to call
-     a library function.  Coerce the argument to one of the
-     existing library functions for this case.  */
-
-  if (f->rank != 0 && array->ts.type == BT_INTEGER
-      && array->ts.kind < gfc_default_integer_kind)
-    {
-      gfc_typespec ts;
-      ts.type = BT_INTEGER;
-      ts.kind = gfc_default_integer_kind;
-      gfc_convert_type_warn (array, &ts, 2, 0);
-    }
-
   f->value.function.name
     = gfc_get_string (PREFIX ("%s%d_%d_%c%d"), name, dim != NULL, f->ts.kind,
 		      gfc_type_letter (array->ts.type), array->ts.kind);
@@ -1398,19 +1385,6 @@ gfc_resolve_minloc (gfc_expr *f, gfc_exp
   else
     name = "minloc";
 
-  /* If the rank of the function is nonzero, we are going to call
-     a library function.  Coerce the argument to one of the
-     existing library functions for this case.  */
-
-  if (f->rank != 0 && array->ts.type == BT_INTEGER
-      && array->ts.kind < gfc_default_integer_kind)
-    {
-      gfc_typespec ts;
-      ts.type = BT_INTEGER;
-      ts.kind = gfc_default_integer_kind;
-      gfc_convert_type_warn (array, &ts, 2, 0);
-    }
-
   f->value.function.name
     = gfc_get_string (PREFIX ("%s%d_%d_%c%d"), name, dim != NULL, f->ts.kind,
 		      gfc_type_letter (array->ts.type), array->ts.kind);
-------------- next part --------------
! { dg-do run }
! Test assorted intrinsics for integer kinds 1 and 2
program main
  integer(kind=1), dimension(2,2) :: a
  integer(kind=2), dimension(2,2) :: b
  integer(kind=1), dimension(2) :: r1
  integer(kind=2), dimension(2) :: r2
  logical, dimension(2,2) :: ma
  ma = .false.
  a = reshape((/ 1_1, 2_1, 3_1, 4_1/), shape(a))
  b = reshape((/ 1_2, 2_2, 3_2, 4_2/), shape(b))
  if (any(sum(a,dim=2) /= (/ 4, 6 /))) call abort
  if (any(sum(b,dim=2) /= (/ 4, 6 /))) call abort
  if (any(product(a,dim=2) /= (/ 3, 8 /))) call abort
  if (any(product(b,dim=2) /= (/ 3, 8 /))) call abort
  if (any(matmul(a,a) /= reshape ( (/ 7, 10, 15, 22 /), shape(a)))) call abort
  if (any(matmul(b,b) /= reshape ( (/ 7, 10, 15, 22 /), shape(b)))) call abort
  if (any(maxval(a,dim=2,mask=ma) /= -128)) call abort
  if (any(maxval(b,dim=2,mask=ma) /= -32768)) call abort
  if (any(minloc(a,dim=2) /= 1)) call abort
  if (any(minloc(b,dim=2) /= 1)) call abort
  if (any(maxloc(a,dim=1) /= 2)) call abort
  if (any(maxloc(b,dim=1) /= 2)) call abort
  if (any(maxloc(a,dim=1,mask=ma) /= 0)) call abort
  if (any(maxloc(b,dim=1,mask=ma) /= 0)) call abort
end program main


More information about the Fortran mailing list