[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