This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]