This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[fortran-dev, patch] PR29600 - add optional kind arguments (F2003)
- From: Daniel Franke <franke dot daniel at gmail dot com>
- To: fortran at gcc dot gnu dot org
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 23 Mar 2009 10:06:55 +0100
- Subject: [fortran-dev, patch] PR29600 - add optional kind arguments (F2003)
Attached patch adds optional kind arguments to MINLOC, MAXLOC and SHAPE
intrinsics.
Bootstrapped and regression tested on i686-pc-linux-gnu.
Ok for dev and 4.5?
Regards
Daniel
gcc/fortran/:
2009-03-22 Daniel Franke <franke.daniel@gmail.com>
PR fortran/29600
* gfortran.h (gfc_check_f): Renamed member f3ml to f4ml.
* intrinsic.h (gfc_check_shape): Added kind argument to prototype.
(gfc_simplify_shape): Likewise.
(gfc_resolve_maxloc): Likewise.
(gfc_resolve_minloc): Likewise.
(gfc_resolve_shape): Likewise.
* intrinsic.c (add_sym_3ml): Renamed to ...
(add_sym_4ml): ... this. Added another set of arguments.
(add_functions): Added optional kind arguments to minloc, maxloc and shape.
* iresolve.c (gfc_resolve_maxloc): Added kind argument, set kind accordingly.
(gfc_resolve_minloc): Likewise.
(gfc_resolve_shape): Likewise.
* check.c (gfc_check_minloc_maxloc): Added checks for kind argument.
(gfc_check_shape): Likewise.
* simplify.c (gfc_simplify_shape): Set result kind type.
gcc/testsuite/:
2009-03-22 Daniel Franke <franke.daniel@gmail.com>
PR fortran/29600
* gfortran.dg/shape_5.f03: New.
* gfortran.dg/minmaxloc_7.f03: New.
libgfortran/:
2009-03-22 Daniel Franke <franke.daniel@gmail.com>
PR fortran/29600
* Makefile.am (i_maxloc0_c): Added maxloc0_[12]_i1, maxloc0_[12]_i2,
maxloc0_[12]_i4, maxloc0_[12]_i8, maxloc0_[12]_i16, maxloc0_[12]_r4.c,
maxloc0_[12]_r8.c, maxloc0_[12]_r10.c, maxloc0_[12]_r16.c.
(i_maxloc1_c): Added maxloc1_[12]_i1, maxloc1_[12]_i2,
maxloc1_[12]_i4, maxloc1_[12]_i8, maxloc1_[12]_i16, maxloc1_[12]_r4.c,
maxloc1_[12]_r8.c, maxloc1_[12]_r10.c, maxloc1_[12]_r16.c.
(i_minloc0_c): Added minloc0_[12]_i1, minloc0_[12]_i2,
minloc0_[12]_i4, minloc0_[12]_i8, minloc0_[12]_i16, minloc0_[12]_r4.c,
minloc0_[12]_r8.c, minloc0_[12]_r10.c, minloc0_[12]_r16.c.
(i_minloc1_c): Added minloc1_[12]_i1, minloc1_[12]_i2,
minloc1_[12]_i4, minloc1_[12]_i8, minloc1_[12]_i16, minloc1_[12]_r4.c,
minloc1_[12]_r8.c, minloc1_[12]_r10.c, minloc1_[12]_r16.c.
(i_shape_c): Added shape_i1.c,shape_i2.c.
* Makefile.in: Regenerated.
* gfortran.map: Added new functions.
* generated/maxloc0_1_i1.c: New.
* generated/maxloc0_1_i16.c: New.
* generated/maxloc0_1_i2.c: New.
* generated/maxloc0_1_i4.c: New.
* generated/maxloc0_1_i8.c: New.
* generated/maxloc0_1_r10.c: New.
* generated/maxloc0_1_r16.c: New.
* generated/maxloc0_1_r4.c: New.
* generated/maxloc0_1_r8.c: New.
* generated/maxloc0_2_i1.c: New.
* generated/maxloc0_2_i16.c: New.
* generated/maxloc0_2_i2.c: New.
* generated/maxloc0_2_i4.c: New.
* generated/maxloc0_2_i8.c: New.
* generated/maxloc0_2_r10.c: New.
* generated/maxloc0_2_r16.c: New.
* generated/maxloc0_2_r4.c: New.
* generated/maxloc0_2_r8.c: New.
* generated/maxloc1_1_i1.c: New.
* generated/maxloc1_1_i16.c: New.
* generated/maxloc1_1_i2.c: New.
* generated/maxloc1_1_i4.c: New.
* generated/maxloc1_1_i8.c: New.
* generated/maxloc1_1_r10.c: New.
* generated/maxloc1_1_r16.c: New.
* generated/maxloc1_1_r4.c: New.
* generated/maxloc1_1_r8.c: New.
* generated/maxloc1_2_i1.c: New.
* generated/maxloc1_2_i16.c: New.
* generated/maxloc1_2_i2.c: New.
* generated/maxloc1_2_i4.c: New.
* generated/maxloc1_2_i8.c: New.
* generated/maxloc1_2_r10.c: New.
* generated/maxloc1_2_r16.c: New.
* generated/maxloc1_2_r4.c: New.
* generated/maxloc1_2_r8.c: New.
* generated/minloc0_1_i1.c: New.
* generated/minloc0_1_i16.c: New.
* generated/minloc0_1_i2.c: New.
* generated/minloc0_1_i4.c: New.
* generated/minloc0_1_i8.c: New.
* generated/minloc0_1_r10.c: New.
* generated/minloc0_1_r16.c: New.
* generated/minloc0_1_r4.c: New.
* generated/minloc0_1_r8.c: New.
* generated/minloc0_2_i1.c: New.
* generated/minloc0_2_i16.c: New.
* generated/minloc0_2_i2.c: New.
* generated/minloc0_2_i4.c: New.
* generated/minloc0_2_i8.c: New.
* generated/minloc0_2_r10.c: New.
* generated/minloc0_2_r16.c: New.
* generated/minloc0_2_r4.c: New.
* generated/minloc0_2_r8.c: New.
* generated/minloc1_1_i1.c: New.
* generated/minloc1_1_i16.c: New.
* generated/minloc1_1_i2.c: New.
* generated/minloc1_1_i4.c: New.
* generated/minloc1_1_i8.c: New.
* generated/minloc1_1_r10.c: New.
* generated/minloc1_1_r16.c: New.
* generated/minloc1_1_r4.c: New.
* generated/minloc1_1_r8.c: New.
* generated/minloc1_2_i1.c: New.
* generated/minloc1_2_i16.c: New.
* generated/minloc1_2_i2.c: New.
* generated/minloc1_2_i4.c: New.
* generated/minloc1_2_i8.c: New.
* generated/minloc1_2_r10.c: New.
* generated/minloc1_2_r16.c: New.
* generated/minloc1_2_r4.c: New.
* generated/minloc1_2_r8.c: New.
* generated/shape_i1.c: New.
* generated/shape_i2.c: New.
Index: gcc/fortran/intrinsic.c
===================================================================
--- gcc/fortran/intrinsic.c (revision 144994)
+++ gcc/fortran/intrinsic.c (working copy)
@@ -532,27 +532,29 @@ add_sym_3 (const char *name, gfc_isym_id
might have to be reordered. */
static void
-add_sym_3ml (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type,
+add_sym_4ml (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type,
int kind, int standard,
gfc_try (*check) (gfc_actual_arglist *),
- gfc_expr *(*simplify) (gfc_expr *, gfc_expr *, gfc_expr *),
- void (*resolve) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *),
+ gfc_expr *(*simplify) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *),
+ void (*resolve) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *),
const char *a1, bt type1, int kind1, int optional1,
const char *a2, bt type2, int kind2, int optional2,
- const char *a3, bt type3, int kind3, int optional3)
+ const char *a3, bt type3, int kind3, int optional3,
+ const char *a4, bt type4, int kind4, int optional4)
{
gfc_check_f cf;
gfc_simplify_f sf;
gfc_resolve_f rf;
- cf.f3ml = check;
- sf.f3 = simplify;
- rf.f3 = resolve;
+ cf.f4ml = check;
+ sf.f4 = simplify;
+ rf.f4 = resolve;
add_sym (name, id, cl, actual_ok, type, kind, standard, cf, sf, rf,
a1, type1, kind1, optional1,
a2, type2, kind2, optional2,
a3, type3, kind3, optional3,
+ a4, type4, kind4, optional4,
(void *) 0);
}
@@ -1949,10 +1951,10 @@ add_functions (void)
make_generic ("maxexponent", GFC_ISYM_MAXEXPONENT, GFC_STD_F95);
- add_sym_3ml ("maxloc", GFC_ISYM_MAXLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
+ add_sym_4ml ("maxloc", GFC_ISYM_MAXLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
gfc_check_minloc_maxloc, NULL, gfc_resolve_maxloc,
ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
- msk, BT_LOGICAL, dl, OPTIONAL);
+ msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL);
make_generic ("maxloc", GFC_ISYM_MAXLOC, GFC_STD_F95);
@@ -2015,10 +2017,10 @@ add_functions (void)
make_generic ("minexponent", GFC_ISYM_MINEXPONENT, GFC_STD_F95);
- add_sym_3ml ("minloc", GFC_ISYM_MINLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
+ add_sym_4ml ("minloc", GFC_ISYM_MINLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
gfc_check_minloc_maxloc, NULL, gfc_resolve_minloc,
ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
- msk, BT_LOGICAL, dl, OPTIONAL);
+ msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL);
make_generic ("minloc", GFC_ISYM_MINLOC, GFC_STD_F95);
@@ -2230,9 +2232,9 @@ add_functions (void)
make_generic ("set_exponent", GFC_ISYM_SET_EXPONENT, GFC_STD_F95);
- add_sym_1 ("shape", GFC_ISYM_SHAPE, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
+ add_sym_2 ("shape", GFC_ISYM_SHAPE, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
gfc_check_shape, gfc_simplify_shape, gfc_resolve_shape,
- src, BT_REAL, dr, REQUIRED);
+ src, BT_REAL, dr, REQUIRED, kind, BT_INTEGER, di, OPTIONAL);
make_generic ("shape", GFC_ISYM_SHAPE, GFC_STD_F95);
@@ -3438,7 +3440,7 @@ check_specific (gfc_intrinsic_sym *speci
&expr->where) == FAILURE)
return FAILURE;
- if (specific->check.f3ml == gfc_check_minloc_maxloc)
+ if (specific->check.f4ml == gfc_check_minloc_maxloc)
/* This is special because we might have to reorder the argument list. */
t = gfc_check_minloc_maxloc (*ap);
else if (specific->check.f3red == gfc_check_minval_maxval)
Index: gcc/fortran/intrinsic.h
===================================================================
--- gcc/fortran/intrinsic.h (revision 144994)
+++ gcc/fortran/intrinsic.h (working copy)
@@ -125,7 +125,7 @@ gfc_try gfc_check_selected_char_kind (gf
gfc_try gfc_check_selected_int_kind (gfc_expr *);
gfc_try gfc_check_selected_real_kind (gfc_expr *, gfc_expr *);
gfc_try gfc_check_set_exponent (gfc_expr *, gfc_expr *);
-gfc_try gfc_check_shape (gfc_expr *);
+gfc_try gfc_check_shape (gfc_expr *, gfc_expr *);
gfc_try gfc_check_size (gfc_expr *, gfc_expr *, gfc_expr *);
gfc_try gfc_check_sign (gfc_expr *, gfc_expr *);
gfc_try gfc_check_signal (gfc_expr *, gfc_expr *);
@@ -304,7 +304,7 @@ gfc_expr *gfc_simplify_selected_int_kind
gfc_expr *gfc_simplify_selected_real_kind (gfc_expr *, gfc_expr *);
gfc_expr *gfc_simplify_set_exponent (gfc_expr *, gfc_expr *);
gfc_expr *gfc_simplify_sign (gfc_expr *, gfc_expr *);
-gfc_expr *gfc_simplify_shape (gfc_expr *);
+gfc_expr *gfc_simplify_shape (gfc_expr *, gfc_expr *);
gfc_expr *gfc_simplify_sin (gfc_expr *);
gfc_expr *gfc_simplify_sinh (gfc_expr *);
gfc_expr *gfc_simplify_size (gfc_expr *, gfc_expr *, gfc_expr *);
@@ -425,13 +425,13 @@ void gfc_resolve_lstat (gfc_expr *, gfc_
void gfc_resolve_malloc (gfc_expr *, gfc_expr *);
void gfc_resolve_matmul (gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_max (gfc_expr *, gfc_actual_arglist *);
-void gfc_resolve_maxloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_maxloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_maxval (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_mclock (gfc_expr *);
void gfc_resolve_mclock8 (gfc_expr *);
void gfc_resolve_merge (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_min (gfc_expr *, gfc_actual_arglist *);
-void gfc_resolve_minloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_minloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_minval (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_mod (gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_modulo (gfc_expr *, gfc_expr *, gfc_expr *);
@@ -454,7 +454,7 @@ void gfc_resolve_scan (gfc_expr *, gfc_e
void gfc_resolve_second_sub (gfc_code *);
void gfc_resolve_secnds (gfc_expr *, gfc_expr *);
void gfc_resolve_set_exponent (gfc_expr *, gfc_expr *, gfc_expr *);
-void gfc_resolve_shape (gfc_expr *, gfc_expr *);
+void gfc_resolve_shape (gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_sign (gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_signal (gfc_expr *, gfc_expr *, gfc_expr *);
void gfc_resolve_sin (gfc_expr *, gfc_expr *);
Index: gcc/fortran/gfortran.h
===================================================================
--- gcc/fortran/gfortran.h (revision 144994)
+++ gcc/fortran/gfortran.h (working copy)
@@ -1430,7 +1430,7 @@ gfc_intrinsic_arg;
argument lists of intrinsic functions. fX with X an integer refer
to check functions of intrinsics with X arguments. f1m is used for
the MAX and MIN intrinsics which can have an arbitrary number of
- arguments, f3ml is used for the MINLOC and MAXLOC intrinsics as
+ arguments, f4ml is used for the MINLOC and MAXLOC intrinsics as
these have special semantics. */
typedef union
@@ -1440,7 +1440,7 @@ typedef union
gfc_try (*f1m)(gfc_actual_arglist *);
gfc_try (*f2)(struct gfc_expr *, struct gfc_expr *);
gfc_try (*f3)(struct gfc_expr *, struct gfc_expr *, struct gfc_expr *);
- gfc_try (*f3ml)(gfc_actual_arglist *);
+ gfc_try (*f4ml)(gfc_actual_arglist *);
gfc_try (*f3red)(gfc_actual_arglist *);
gfc_try (*f4)(struct gfc_expr *, struct gfc_expr *, struct gfc_expr *,
struct gfc_expr *);
Index: gcc/fortran/iresolve.c
===================================================================
--- gcc/fortran/iresolve.c (revision 144994)
+++ gcc/fortran/iresolve.c (working copy)
@@ -1410,13 +1410,16 @@ gfc_resolve_max (gfc_expr *f, gfc_actual
void
gfc_resolve_maxloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
- gfc_expr *mask)
+ gfc_expr *mask, gfc_expr *kind)
{
const char *name;
int i, j, idim;
f->ts.type = BT_INTEGER;
- f->ts.kind = gfc_default_integer_kind;
+ if (kind)
+ f->ts.kind = mpz_get_si (kind->value.integer);
+ else
+ f->ts.kind = gfc_default_integer_kind;
if (dim == NULL)
{
@@ -1552,13 +1555,16 @@ gfc_resolve_min (gfc_expr *f, gfc_actual
void
gfc_resolve_minloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
- gfc_expr *mask)
+ gfc_expr *mask, gfc_expr *kind)
{
const char *name;
int i, j, idim;
f->ts.type = BT_INTEGER;
- f->ts.kind = gfc_default_integer_kind;
+ if (kind)
+ f->ts.kind = mpz_get_si (kind->value.integer);
+ else
+ f->ts.kind = gfc_default_integer_kind;
if (dim == NULL)
{
@@ -1991,10 +1997,14 @@ gfc_resolve_set_exponent (gfc_expr *f, g
void
-gfc_resolve_shape (gfc_expr *f, gfc_expr *array)
+gfc_resolve_shape (gfc_expr *f, gfc_expr *array, gfc_expr *kind)
{
f->ts.type = BT_INTEGER;
- f->ts.kind = gfc_default_integer_kind;
+ if (kind)
+ f->ts.kind = mpz_get_si (kind->value.integer);
+ else
+ f->ts.kind = gfc_default_integer_kind;
+
f->rank = 1;
f->shape = gfc_get_shape (1);
mpz_init_set_ui (f->shape[0], array->rank);
Index: gcc/fortran/check.c
===================================================================
--- gcc/fortran/check.c (revision 144996)
+++ gcc/fortran/check.c (working copy)
@@ -1876,10 +1876,10 @@ gfc_check_matmul (gfc_expr *matrix_a, gf
Arg #2 Arg #3
NULL NULL
- DIM NULL
+ DIM NULL
MASK NULL
NULL MASK minloc(array, mask=m)
- DIM MASK
+ DIM MASK
I.e. in the case of minloc(array,mask), mask will be in the second
position of the argument list and we'll have to fix that up. */
@@ -1887,7 +1887,7 @@ gfc_check_matmul (gfc_expr *matrix_a, gf
gfc_try
gfc_check_minloc_maxloc (gfc_actual_arglist *ap)
{
- gfc_expr *a, *m, *d;
+ gfc_expr *a, *m, *d, *k;
a = ap->expr;
if (int_or_real_check (a, 0) == FAILURE || array_check (a, 0) == FAILURE)
@@ -1895,6 +1895,7 @@ gfc_check_minloc_maxloc (gfc_actual_argl
d = ap->next->expr;
m = ap->next->next->expr;
+ k = ap->next->next->next->expr;
if (m == NULL && d != NULL && d->ts.type == BT_LOGICAL
&& ap->next->name == NULL)
@@ -1924,6 +1925,14 @@ gfc_check_minloc_maxloc (gfc_actual_argl
return FAILURE;
}
+ if (kind_check (k, 1, BT_INTEGER) == FAILURE)
+ return FAILURE;
+
+ if (k && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ "with KIND argument at %L",
+ gfc_current_intrinsic, &k->where) == FAILURE)
+ return FAILURE;
+
return SUCCESS;
}
@@ -2611,10 +2620,18 @@ gfc_check_set_exponent (gfc_expr *x, gfc
gfc_try
-gfc_check_shape (gfc_expr *source)
+gfc_check_shape (gfc_expr *source, gfc_expr *kind)
{
gfc_array_ref *ar;
+ if (kind_check (kind, 1, BT_INTEGER) == FAILURE)
+ return FAILURE;
+
+ if (kind && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: '%s' intrinsic "
+ "with KIND argument at %L",
+ gfc_current_intrinsic, &kind->where) == FAILURE)
+ return FAILURE;
+
if (source->rank == 0 || source->expr_type != EXPR_VARIABLE)
return SUCCESS;
Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c (revision 144996)
+++ gcc/fortran/simplify.c (working copy)
@@ -3967,22 +3967,27 @@ gfc_simplify_set_exponent (gfc_expr *x,
gfc_expr *
-gfc_simplify_shape (gfc_expr *source)
+gfc_simplify_shape (gfc_expr *source, gfc_expr *kind_expr)
{
mpz_t shape[GFC_MAX_DIMENSIONS];
gfc_expr *result, *e, *f;
gfc_array_ref *ar;
int n;
+ int kind;
gfc_try t;
+ kind = gfc_default_integer_kind;
+ if (kind_expr)
+ gfc_extract_int (kind_expr, &kind);
+
if (source->rank == 0)
- return gfc_start_constructor (BT_INTEGER, gfc_default_integer_kind,
+ return gfc_start_constructor (BT_INTEGER, kind,
&source->where);
if (source->expr_type != EXPR_VARIABLE)
return NULL;
- result = gfc_start_constructor (BT_INTEGER, gfc_default_integer_kind,
+ result = gfc_start_constructor (BT_INTEGER, kind,
&source->where);
ar = gfc_find_array_ref (source);
@@ -3991,7 +3996,7 @@ gfc_simplify_shape (gfc_expr *source)
for (n = 0; n < source->rank; n++)
{
- e = gfc_constant_result (BT_INTEGER, gfc_default_integer_kind,
+ e = gfc_constant_result (BT_INTEGER, kind,
&source->where);
if (t == SUCCESS)
Index: libgfortran/Makefile.am
===================================================================
--- libgfortran/Makefile.am (revision 144995)
+++ libgfortran/Makefile.am (working copy)
@@ -151,59 +151,95 @@ $(srcdir)/generated/count_8_l.c \
$(srcdir)/generated/count_16_l.c
i_maxloc0_c= \
+$(srcdir)/generated/maxloc0_1_i1.c \
+$(srcdir)/generated/maxloc0_2_i1.c \
$(srcdir)/generated/maxloc0_4_i1.c \
$(srcdir)/generated/maxloc0_8_i1.c \
$(srcdir)/generated/maxloc0_16_i1.c \
+$(srcdir)/generated/maxloc0_1_i2.c \
+$(srcdir)/generated/maxloc0_2_i2.c \
$(srcdir)/generated/maxloc0_4_i2.c \
$(srcdir)/generated/maxloc0_8_i2.c \
$(srcdir)/generated/maxloc0_16_i2.c \
+$(srcdir)/generated/maxloc0_1_i4.c \
+$(srcdir)/generated/maxloc0_2_i4.c \
$(srcdir)/generated/maxloc0_4_i4.c \
$(srcdir)/generated/maxloc0_8_i4.c \
$(srcdir)/generated/maxloc0_16_i4.c \
+$(srcdir)/generated/maxloc0_1_i8.c \
+$(srcdir)/generated/maxloc0_2_i8.c \
$(srcdir)/generated/maxloc0_4_i8.c \
$(srcdir)/generated/maxloc0_8_i8.c \
$(srcdir)/generated/maxloc0_16_i8.c \
+$(srcdir)/generated/maxloc0_1_i16.c \
+$(srcdir)/generated/maxloc0_2_i16.c \
$(srcdir)/generated/maxloc0_4_i16.c \
$(srcdir)/generated/maxloc0_8_i16.c \
$(srcdir)/generated/maxloc0_16_i16.c \
+$(srcdir)/generated/maxloc0_1_r4.c \
+$(srcdir)/generated/maxloc0_2_r4.c \
$(srcdir)/generated/maxloc0_4_r4.c \
$(srcdir)/generated/maxloc0_8_r4.c \
$(srcdir)/generated/maxloc0_16_r4.c \
+$(srcdir)/generated/maxloc0_1_r8.c \
+$(srcdir)/generated/maxloc0_2_r8.c \
$(srcdir)/generated/maxloc0_4_r8.c \
$(srcdir)/generated/maxloc0_8_r8.c \
$(srcdir)/generated/maxloc0_16_r8.c \
+$(srcdir)/generated/maxloc0_1_r10.c \
+$(srcdir)/generated/maxloc0_2_r10.c \
$(srcdir)/generated/maxloc0_4_r10.c \
$(srcdir)/generated/maxloc0_8_r10.c \
$(srcdir)/generated/maxloc0_16_r10.c \
+$(srcdir)/generated/maxloc0_1_r16.c \
+$(srcdir)/generated/maxloc0_2_r16.c \
$(srcdir)/generated/maxloc0_4_r16.c \
$(srcdir)/generated/maxloc0_8_r16.c \
$(srcdir)/generated/maxloc0_16_r16.c
i_maxloc1_c= \
+$(srcdir)/generated/maxloc1_1_i1.c \
+$(srcdir)/generated/maxloc1_2_i1.c \
$(srcdir)/generated/maxloc1_4_i1.c \
$(srcdir)/generated/maxloc1_8_i1.c \
$(srcdir)/generated/maxloc1_16_i1.c \
+$(srcdir)/generated/maxloc1_1_i2.c \
+$(srcdir)/generated/maxloc1_2_i2.c \
$(srcdir)/generated/maxloc1_4_i2.c \
$(srcdir)/generated/maxloc1_8_i2.c \
$(srcdir)/generated/maxloc1_16_i2.c \
+$(srcdir)/generated/maxloc1_1_i4.c \
+$(srcdir)/generated/maxloc1_2_i4.c \
$(srcdir)/generated/maxloc1_4_i4.c \
$(srcdir)/generated/maxloc1_8_i4.c \
$(srcdir)/generated/maxloc1_16_i4.c \
+$(srcdir)/generated/maxloc1_1_i8.c \
+$(srcdir)/generated/maxloc1_2_i8.c \
$(srcdir)/generated/maxloc1_4_i8.c \
$(srcdir)/generated/maxloc1_8_i8.c \
$(srcdir)/generated/maxloc1_16_i8.c \
+$(srcdir)/generated/maxloc1_1_i16.c \
+$(srcdir)/generated/maxloc1_2_i16.c \
$(srcdir)/generated/maxloc1_4_i16.c \
$(srcdir)/generated/maxloc1_8_i16.c \
$(srcdir)/generated/maxloc1_16_i16.c \
+$(srcdir)/generated/maxloc1_1_r4.c \
+$(srcdir)/generated/maxloc1_2_r4.c \
$(srcdir)/generated/maxloc1_4_r4.c \
$(srcdir)/generated/maxloc1_8_r4.c \
$(srcdir)/generated/maxloc1_16_r4.c \
+$(srcdir)/generated/maxloc1_1_r8.c \
+$(srcdir)/generated/maxloc1_2_r8.c \
$(srcdir)/generated/maxloc1_4_r8.c \
$(srcdir)/generated/maxloc1_8_r8.c \
$(srcdir)/generated/maxloc1_16_r8.c \
+$(srcdir)/generated/maxloc1_1_r10.c \
+$(srcdir)/generated/maxloc1_2_r10.c \
$(srcdir)/generated/maxloc1_4_r10.c \
$(srcdir)/generated/maxloc1_8_r10.c \
$(srcdir)/generated/maxloc1_16_r10.c \
+$(srcdir)/generated/maxloc1_1_r16.c \
+$(srcdir)/generated/maxloc1_2_r16.c \
$(srcdir)/generated/maxloc1_4_r16.c \
$(srcdir)/generated/maxloc1_8_r16.c \
$(srcdir)/generated/maxloc1_16_r16.c
@@ -220,59 +256,96 @@ $(srcdir)/generated/maxval_r10.c \
$(srcdir)/generated/maxval_r16.c
i_minloc0_c= \
+$(srcdir)/generated/minloc0_1_i1.c \
+$(srcdir)/generated/minloc0_2_i1.c \
$(srcdir)/generated/minloc0_4_i1.c \
$(srcdir)/generated/minloc0_8_i1.c \
$(srcdir)/generated/minloc0_16_i1.c \
+$(srcdir)/generated/minloc0_1_i2.c \
+$(srcdir)/generated/minloc0_2_i2.c \
$(srcdir)/generated/minloc0_4_i2.c \
$(srcdir)/generated/minloc0_8_i2.c \
$(srcdir)/generated/minloc0_16_i2.c \
+$(srcdir)/generated/minloc0_1_i4.c \
+$(srcdir)/generated/minloc0_2_i4.c \
$(srcdir)/generated/minloc0_4_i4.c \
$(srcdir)/generated/minloc0_8_i4.c \
$(srcdir)/generated/minloc0_16_i4.c \
+$(srcdir)/generated/minloc0_1_i8.c \
+$(srcdir)/generated/minloc0_2_i8.c \
$(srcdir)/generated/minloc0_4_i8.c \
$(srcdir)/generated/minloc0_8_i8.c \
$(srcdir)/generated/minloc0_16_i8.c \
+$(srcdir)/generated/minloc0_1_i16.c \
+$(srcdir)/generated/minloc0_2_i16.c \
$(srcdir)/generated/minloc0_4_i16.c \
$(srcdir)/generated/minloc0_8_i16.c \
$(srcdir)/generated/minloc0_16_i16.c \
+$(srcdir)/generated/minloc0_1_r4.c \
+$(srcdir)/generated/minloc0_2_r4.c \
$(srcdir)/generated/minloc0_4_r4.c \
$(srcdir)/generated/minloc0_8_r4.c \
$(srcdir)/generated/minloc0_16_r4.c \
+$(srcdir)/generated/minloc0_1_r8.c \
+$(srcdir)/generated/minloc0_2_r8.c \
$(srcdir)/generated/minloc0_4_r8.c \
$(srcdir)/generated/minloc0_8_r8.c \
$(srcdir)/generated/minloc0_16_r8.c \
+$(srcdir)/generated/minloc0_1_r10.c \
+$(srcdir)/generated/minloc0_2_r10.c \
$(srcdir)/generated/minloc0_4_r10.c \
$(srcdir)/generated/minloc0_8_r10.c \
$(srcdir)/generated/minloc0_16_r10.c \
+$(srcdir)/generated/minloc0_1_r16.c \
+$(srcdir)/generated/minloc0_2_r16.c \
$(srcdir)/generated/minloc0_4_r16.c \
$(srcdir)/generated/minloc0_8_r16.c \
$(srcdir)/generated/minloc0_16_r16.c
+
i_minloc1_c= \
+$(srcdir)/generated/minloc1_1_i1.c \
+$(srcdir)/generated/minloc1_2_i1.c \
$(srcdir)/generated/minloc1_4_i1.c \
$(srcdir)/generated/minloc1_8_i1.c \
$(srcdir)/generated/minloc1_16_i1.c \
+$(srcdir)/generated/minloc1_1_i2.c \
+$(srcdir)/generated/minloc1_2_i2.c \
$(srcdir)/generated/minloc1_4_i2.c \
$(srcdir)/generated/minloc1_8_i2.c \
$(srcdir)/generated/minloc1_16_i2.c \
+$(srcdir)/generated/minloc1_1_i4.c \
+$(srcdir)/generated/minloc1_2_i4.c \
$(srcdir)/generated/minloc1_4_i4.c \
$(srcdir)/generated/minloc1_8_i4.c \
$(srcdir)/generated/minloc1_16_i4.c \
+$(srcdir)/generated/minloc1_1_i8.c \
+$(srcdir)/generated/minloc1_2_i8.c \
$(srcdir)/generated/minloc1_4_i8.c \
$(srcdir)/generated/minloc1_8_i8.c \
$(srcdir)/generated/minloc1_16_i8.c \
+$(srcdir)/generated/minloc1_1_i16.c \
+$(srcdir)/generated/minloc1_2_i16.c \
$(srcdir)/generated/minloc1_4_i16.c \
$(srcdir)/generated/minloc1_8_i16.c \
$(srcdir)/generated/minloc1_16_i16.c \
+$(srcdir)/generated/minloc1_1_r4.c \
+$(srcdir)/generated/minloc1_2_r4.c \
$(srcdir)/generated/minloc1_4_r4.c \
$(srcdir)/generated/minloc1_8_r4.c \
$(srcdir)/generated/minloc1_16_r4.c \
+$(srcdir)/generated/minloc1_1_r8.c \
+$(srcdir)/generated/minloc1_2_r8.c \
$(srcdir)/generated/minloc1_4_r8.c \
$(srcdir)/generated/minloc1_8_r8.c \
$(srcdir)/generated/minloc1_16_r8.c \
+$(srcdir)/generated/minloc1_1_r10.c \
+$(srcdir)/generated/minloc1_2_r10.c \
$(srcdir)/generated/minloc1_4_r10.c \
$(srcdir)/generated/minloc1_8_r10.c \
$(srcdir)/generated/minloc1_16_r10.c \
+$(srcdir)/generated/minloc1_1_r16.c \
+$(srcdir)/generated/minloc1_2_r16.c \
$(srcdir)/generated/minloc1_4_r16.c \
$(srcdir)/generated/minloc1_8_r16.c \
$(srcdir)/generated/minloc1_16_r16.c
@@ -352,6 +425,8 @@ $(srcdir)/generated/transpose_c10.c \
$(srcdir)/generated/transpose_c16.c
i_shape_c= \
+$(srcdir)/generated/shape_i1.c \
+$(srcdir)/generated/shape_i2.c \
$(srcdir)/generated/shape_i4.c \
$(srcdir)/generated/shape_i8.c \
$(srcdir)/generated/shape_i16.c
Index: libgfortran/gfortran.map
===================================================================
--- libgfortran/gfortran.map (revision 144995)
+++ libgfortran/gfortran.map (working copy)
@@ -215,6 +215,24 @@ GFORTRAN_1.0 {
_gfortran_maxloc0_16_r16;
_gfortran_maxloc0_16_r4;
_gfortran_maxloc0_16_r8;
+ _gfortran_maxloc0_1_i1;
+ _gfortran_maxloc0_1_i16;
+ _gfortran_maxloc0_1_i2;
+ _gfortran_maxloc0_1_i4;
+ _gfortran_maxloc0_1_i8;
+ _gfortran_maxloc0_1_r10;
+ _gfortran_maxloc0_1_r16;
+ _gfortran_maxloc0_1_r4;
+ _gfortran_maxloc0_1_r8;
+ _gfortran_maxloc0_2_i1;
+ _gfortran_maxloc0_2_i16;
+ _gfortran_maxloc0_2_i2;
+ _gfortran_maxloc0_2_i4;
+ _gfortran_maxloc0_2_i8;
+ _gfortran_maxloc0_2_r10;
+ _gfortran_maxloc0_2_r16;
+ _gfortran_maxloc0_2_r4;
+ _gfortran_maxloc0_2_r8;
_gfortran_maxloc0_4_i1;
_gfortran_maxloc0_4_i16;
_gfortran_maxloc0_4_i2;
@@ -242,6 +260,24 @@ GFORTRAN_1.0 {
_gfortran_maxloc1_16_r16;
_gfortran_maxloc1_16_r4;
_gfortran_maxloc1_16_r8;
+ _gfortran_maxloc1_1_i1;
+ _gfortran_maxloc1_1_i16;
+ _gfortran_maxloc1_1_i2;
+ _gfortran_maxloc1_1_i4;
+ _gfortran_maxloc1_1_i8;
+ _gfortran_maxloc1_1_r10;
+ _gfortran_maxloc1_1_r16;
+ _gfortran_maxloc1_1_r4;
+ _gfortran_maxloc1_1_r8;
+ _gfortran_maxloc1_2_i1;
+ _gfortran_maxloc1_2_i16;
+ _gfortran_maxloc1_2_i2;
+ _gfortran_maxloc1_2_i4;
+ _gfortran_maxloc1_2_i8;
+ _gfortran_maxloc1_2_r10;
+ _gfortran_maxloc1_2_r16;
+ _gfortran_maxloc1_2_r4;
+ _gfortran_maxloc1_2_r8;
_gfortran_maxloc1_4_i1;
_gfortran_maxloc1_4_i16;
_gfortran_maxloc1_4_i2;
@@ -280,6 +316,24 @@ GFORTRAN_1.0 {
_gfortran_minloc0_16_r16;
_gfortran_minloc0_16_r4;
_gfortran_minloc0_16_r8;
+ _gfortran_minloc0_1_i1;
+ _gfortran_minloc0_1_i16;
+ _gfortran_minloc0_1_i2;
+ _gfortran_minloc0_1_i4;
+ _gfortran_minloc0_1_i8;
+ _gfortran_minloc0_1_r10;
+ _gfortran_minloc0_1_r16;
+ _gfortran_minloc0_1_r4;
+ _gfortran_minloc0_1_r8;
+ _gfortran_minloc0_2_i1;
+ _gfortran_minloc0_2_i16;
+ _gfortran_minloc0_2_i2;
+ _gfortran_minloc0_2_i4;
+ _gfortran_minloc0_2_i8;
+ _gfortran_minloc0_2_r10;
+ _gfortran_minloc0_2_r16;
+ _gfortran_minloc0_2_r4;
+ _gfortran_minloc0_2_r8;
_gfortran_minloc0_4_i1;
_gfortran_minloc0_4_i16;
_gfortran_minloc0_4_i2;
@@ -307,6 +361,24 @@ GFORTRAN_1.0 {
_gfortran_minloc1_16_r16;
_gfortran_minloc1_16_r4;
_gfortran_minloc1_16_r8;
+ _gfortran_minloc1_1_i1;
+ _gfortran_minloc1_1_i16;
+ _gfortran_minloc1_1_i2;
+ _gfortran_minloc1_1_i4;
+ _gfortran_minloc1_1_i8;
+ _gfortran_minloc1_1_r10;
+ _gfortran_minloc1_1_r16;
+ _gfortran_minloc1_1_r4;
+ _gfortran_minloc1_1_r8;
+ _gfortran_minloc1_2_i1;
+ _gfortran_minloc1_2_i16;
+ _gfortran_minloc1_2_i2;
+ _gfortran_minloc1_2_i4;
+ _gfortran_minloc1_2_i8;
+ _gfortran_minloc1_2_r10;
+ _gfortran_minloc1_2_r16;
+ _gfortran_minloc1_2_r4;
+ _gfortran_minloc1_2_r8;
_gfortran_minloc1_4_i1;
_gfortran_minloc1_4_i16;
_gfortran_minloc1_4_i2;
@@ -343,6 +415,24 @@ GFORTRAN_1.0 {
_gfortran_mmaxloc0_16_r16;
_gfortran_mmaxloc0_16_r4;
_gfortran_mmaxloc0_16_r8;
+ _gfortran_mmaxloc0_1_i1;
+ _gfortran_mmaxloc0_1_i16;
+ _gfortran_mmaxloc0_1_i2;
+ _gfortran_mmaxloc0_1_i4;
+ _gfortran_mmaxloc0_1_i8;
+ _gfortran_mmaxloc0_1_r10;
+ _gfortran_mmaxloc0_1_r16;
+ _gfortran_mmaxloc0_1_r4;
+ _gfortran_mmaxloc0_1_r8;
+ _gfortran_mmaxloc0_2_i1;
+ _gfortran_mmaxloc0_2_i16;
+ _gfortran_mmaxloc0_2_i2;
+ _gfortran_mmaxloc0_2_i4;
+ _gfortran_mmaxloc0_2_i8;
+ _gfortran_mmaxloc0_2_r10;
+ _gfortran_mmaxloc0_2_r16;
+ _gfortran_mmaxloc0_2_r4;
+ _gfortran_mmaxloc0_2_r8;
_gfortran_mmaxloc0_4_i1;
_gfortran_mmaxloc0_4_i16;
_gfortran_mmaxloc0_4_i2;
@@ -370,6 +460,24 @@ GFORTRAN_1.0 {
_gfortran_mmaxloc1_16_r16;
_gfortran_mmaxloc1_16_r4;
_gfortran_mmaxloc1_16_r8;
+ _gfortran_mmaxloc1_1_i1;
+ _gfortran_mmaxloc1_1_i16;
+ _gfortran_mmaxloc1_1_i2;
+ _gfortran_mmaxloc1_1_i4;
+ _gfortran_mmaxloc1_1_i8;
+ _gfortran_mmaxloc1_1_r10;
+ _gfortran_mmaxloc1_1_r16;
+ _gfortran_mmaxloc1_1_r4;
+ _gfortran_mmaxloc1_1_r8;
+ _gfortran_mmaxloc1_2_i1;
+ _gfortran_mmaxloc1_2_i16;
+ _gfortran_mmaxloc1_2_i2;
+ _gfortran_mmaxloc1_2_i4;
+ _gfortran_mmaxloc1_2_i8;
+ _gfortran_mmaxloc1_2_r10;
+ _gfortran_mmaxloc1_2_r16;
+ _gfortran_mmaxloc1_2_r4;
+ _gfortran_mmaxloc1_2_r8;
_gfortran_mmaxloc1_4_i1;
_gfortran_mmaxloc1_4_i16;
_gfortran_mmaxloc1_4_i2;
@@ -406,6 +514,24 @@ GFORTRAN_1.0 {
_gfortran_mminloc0_16_r16;
_gfortran_mminloc0_16_r4;
_gfortran_mminloc0_16_r8;
+ _gfortran_mminloc0_1_i1;
+ _gfortran_mminloc0_1_i16;
+ _gfortran_mminloc0_1_i2;
+ _gfortran_mminloc0_1_i4;
+ _gfortran_mminloc0_1_i8;
+ _gfortran_mminloc0_1_r10;
+ _gfortran_mminloc0_1_r16;
+ _gfortran_mminloc0_1_r4;
+ _gfortran_mminloc0_1_r8;
+ _gfortran_mminloc0_2_i1;
+ _gfortran_mminloc0_2_i16;
+ _gfortran_mminloc0_2_i2;
+ _gfortran_mminloc0_2_i4;
+ _gfortran_mminloc0_2_i8;
+ _gfortran_mminloc0_2_r10;
+ _gfortran_mminloc0_2_r16;
+ _gfortran_mminloc0_2_r4;
+ _gfortran_mminloc0_2_r8;
_gfortran_mminloc0_4_i1;
_gfortran_mminloc0_4_i16;
_gfortran_mminloc0_4_i2;
@@ -433,6 +559,24 @@ GFORTRAN_1.0 {
_gfortran_mminloc1_16_r16;
_gfortran_mminloc1_16_r4;
_gfortran_mminloc1_16_r8;
+ _gfortran_mminloc1_1_i1;
+ _gfortran_mminloc1_1_i16;
+ _gfortran_mminloc1_1_i2;
+ _gfortran_mminloc1_1_i4;
+ _gfortran_mminloc1_1_i8;
+ _gfortran_mminloc1_1_r10;
+ _gfortran_mminloc1_1_r16;
+ _gfortran_mminloc1_1_r4;
+ _gfortran_mminloc1_1_r8;
+ _gfortran_mminloc1_2_i1;
+ _gfortran_mminloc1_2_i16;
+ _gfortran_mminloc1_2_i2;
+ _gfortran_mminloc1_2_i4;
+ _gfortran_mminloc1_2_i8;
+ _gfortran_mminloc1_2_r10;
+ _gfortran_mminloc1_2_r16;
+ _gfortran_mminloc1_2_r4;
+ _gfortran_mminloc1_2_r8;
_gfortran_mminloc1_4_i1;
_gfortran_mminloc1_4_i16;
_gfortran_mminloc1_4_i2;
@@ -593,6 +737,8 @@ GFORTRAN_1.0 {
_gfortran_set_record_marker;
_gfortran_set_options;
_gfortran_shape_16;
+ _gfortran_shape_1;
+ _gfortran_shape_2;
_gfortran_shape_4;
_gfortran_shape_8;
_gfortran_signal_func;
@@ -612,6 +758,24 @@ GFORTRAN_1.0 {
_gfortran_smaxloc0_16_r16;
_gfortran_smaxloc0_16_r4;
_gfortran_smaxloc0_16_r8;
+ _gfortran_smaxloc0_1_i1;
+ _gfortran_smaxloc0_1_i16;
+ _gfortran_smaxloc0_1_i2;
+ _gfortran_smaxloc0_1_i4;
+ _gfortran_smaxloc0_1_i8;
+ _gfortran_smaxloc0_1_r10;
+ _gfortran_smaxloc0_1_r16;
+ _gfortran_smaxloc0_1_r4;
+ _gfortran_smaxloc0_1_r8;
+ _gfortran_smaxloc0_2_i1;
+ _gfortran_smaxloc0_2_i16;
+ _gfortran_smaxloc0_2_i2;
+ _gfortran_smaxloc0_2_i4;
+ _gfortran_smaxloc0_2_i8;
+ _gfortran_smaxloc0_2_r10;
+ _gfortran_smaxloc0_2_r16;
+ _gfortran_smaxloc0_2_r4;
+ _gfortran_smaxloc0_2_r8;
_gfortran_smaxloc0_4_i1;
_gfortran_smaxloc0_4_i16;
_gfortran_smaxloc0_4_i2;
@@ -639,6 +803,24 @@ GFORTRAN_1.0 {
_gfortran_smaxloc1_16_r16;
_gfortran_smaxloc1_16_r4;
_gfortran_smaxloc1_16_r8;
+ _gfortran_smaxloc1_1_i1;
+ _gfortran_smaxloc1_1_i16;
+ _gfortran_smaxloc1_1_i2;
+ _gfortran_smaxloc1_1_i4;
+ _gfortran_smaxloc1_1_i8;
+ _gfortran_smaxloc1_1_r10;
+ _gfortran_smaxloc1_1_r16;
+ _gfortran_smaxloc1_1_r4;
+ _gfortran_smaxloc1_1_r8;
+ _gfortran_smaxloc1_2_i1;
+ _gfortran_smaxloc1_2_i16;
+ _gfortran_smaxloc1_2_i2;
+ _gfortran_smaxloc1_2_i4;
+ _gfortran_smaxloc1_2_i8;
+ _gfortran_smaxloc1_2_r10;
+ _gfortran_smaxloc1_2_r16;
+ _gfortran_smaxloc1_2_r4;
+ _gfortran_smaxloc1_2_r8;
_gfortran_smaxloc1_4_i1;
_gfortran_smaxloc1_4_i16;
_gfortran_smaxloc1_4_i2;
@@ -675,6 +857,24 @@ GFORTRAN_1.0 {
_gfortran_sminloc0_16_r16;
_gfortran_sminloc0_16_r4;
_gfortran_sminloc0_16_r8;
+ _gfortran_sminloc0_1_i1;
+ _gfortran_sminloc0_1_i16;
+ _gfortran_sminloc0_1_i2;
+ _gfortran_sminloc0_1_i4;
+ _gfortran_sminloc0_1_i8;
+ _gfortran_sminloc0_1_r10;
+ _gfortran_sminloc0_1_r16;
+ _gfortran_sminloc0_1_r4;
+ _gfortran_sminloc0_1_r8;
+ _gfortran_sminloc0_2_i1;
+ _gfortran_sminloc0_2_i16;
+ _gfortran_sminloc0_2_i2;
+ _gfortran_sminloc0_2_i4;
+ _gfortran_sminloc0_2_i8;
+ _gfortran_sminloc0_2_r10;
+ _gfortran_sminloc0_2_r16;
+ _gfortran_sminloc0_2_r4;
+ _gfortran_sminloc0_2_r8;
_gfortran_sminloc0_4_i1;
_gfortran_sminloc0_4_i16;
_gfortran_sminloc0_4_i2;
@@ -702,6 +902,24 @@ GFORTRAN_1.0 {
_gfortran_sminloc1_16_r16;
_gfortran_sminloc1_16_r4;
_gfortran_sminloc1_16_r8;
+ _gfortran_sminloc1_1_i1;
+ _gfortran_sminloc1_1_i16;
+ _gfortran_sminloc1_1_i2;
+ _gfortran_sminloc1_1_i4;
+ _gfortran_sminloc1_1_i8;
+ _gfortran_sminloc1_1_r10;
+ _gfortran_sminloc1_1_r16;
+ _gfortran_sminloc1_1_r4;
+ _gfortran_sminloc1_1_r8;
+ _gfortran_sminloc1_2_i1;
+ _gfortran_sminloc1_2_i16;
+ _gfortran_sminloc1_2_i2;
+ _gfortran_sminloc1_2_i4;
+ _gfortran_sminloc1_2_i8;
+ _gfortran_sminloc1_2_r10;
+ _gfortran_sminloc1_2_r16;
+ _gfortran_sminloc1_2_r4;
+ _gfortran_sminloc1_2_r8;
_gfortran_sminloc1_4_i1;
_gfortran_sminloc1_4_i16;
_gfortran_sminloc1_4_i2;
Index: gcc/testsuite/gfortran.dg/shape_5.f03
===================================================================
--- gcc/testsuite/gfortran.dg/shape_5.f03 (revision 0)
+++ gcc/testsuite/gfortran.dg/shape_5.f03 (revision 0)
@@ -0,0 +1,7 @@
+! { dg-do "run" }
+! Test optional kind argument of SHAPE.
+
+ IF (KIND(SHAPE(1, 2)) /= 2) CALL abort()
+ IF (KIND(SHAPE(1, 4)) /= 4) CALL abort()
+ IF (KIND(SHAPE(1, 8)) /= 8) CALL abort()
+END
Index: gcc/testsuite/gfortran.dg/minmaxloc_7.f03
===================================================================
--- gcc/testsuite/gfortran.dg/minmaxloc_7.f03 (revision 0)
+++ gcc/testsuite/gfortran.dg/minmaxloc_7.f03 (revision 0)
@@ -0,0 +1,20 @@
+! { dg-do "run" }
+! Test optional kind argument of MINLOC/MAXLOC.
+
+ integer :: i(500) = [ (j, j=1, 500) ]
+
+ IF (kind(maxloc(i, kind=1)) /= 1) CALL abort()
+ IF (kind(maxloc(i, kind=2)) /= 2) CALL abort()
+ IF (kind(maxloc(i, kind=4)) /= 4) CALL abort()
+ IF (kind(maxloc(i, kind=8)) /= 8) CALL abort()
+
+ IF (kind(minloc(i, kind=1)) /= 1) CALL abort()
+ IF (kind(minloc(i, kind=2)) /= 2) CALL abort()
+ IF (kind(minloc(i, kind=4)) /= 4) CALL abort()
+ IF (kind(minloc(i, kind=8)) /= 8) CALL abort()
+
+ PRINT *, maxloc(i, kind=1) ! overflow
+ PRINT *, maxloc(i, kind=2)
+ PRINT *, maxloc(i, kind=4)
+ PRINT *, maxloc(i, kind=8)
+END