comparison gcc/fortran/intrinsic.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* Build up a list of intrinsic subroutines and functions for the 1 /* Build up a list of intrinsic subroutines and functions for the
2 name-resolution stage. 2 name-resolution stage.
3 Copyright (C) 2000-2017 Free Software Foundation, Inc. 3 Copyright (C) 2000-2018 Free Software Foundation, Inc.
4 Contributed by Andy Vaught & Katherine Holcomb 4 Contributed by Andy Vaught & Katherine Holcomb
5 5
6 This file is part of GCC. 6 This file is part of GCC.
7 7
8 GCC is free software; you can redistribute it and/or modify it under 8 GCC is free software; you can redistribute it and/or modify it under
685 685
686 /* MINLOC and MAXLOC get special treatment because their argument 686 /* MINLOC and MAXLOC get special treatment because their argument
687 might have to be reordered. */ 687 might have to be reordered. */
688 688
689 static void 689 static void
690 add_sym_3ml (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type, 690 add_sym_5ml (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type,
691 int kind, int standard, 691 int kind, int standard,
692 bool (*check) (gfc_actual_arglist *), 692 bool (*check) (gfc_actual_arglist *),
693 gfc_expr *(*simplify) (gfc_expr *, gfc_expr *, gfc_expr *), 693 gfc_expr *(*simplify) (gfc_expr *, gfc_expr *, gfc_expr *,
694 void (*resolve) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *), 694 gfc_expr *, gfc_expr *),
695 void (*resolve) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *,
696 gfc_expr *, gfc_expr *),
695 const char *a1, bt type1, int kind1, int optional1, 697 const char *a1, bt type1, int kind1, int optional1,
696 const char *a2, bt type2, int kind2, int optional2, 698 const char *a2, bt type2, int kind2, int optional2,
697 const char *a3, bt type3, int kind3, int optional3) 699 const char *a3, bt type3, int kind3, int optional3,
700 const char *a4, bt type4, int kind4, int optional4,
701 const char *a5, bt type5, int kind5, int optional5)
698 { 702 {
699 gfc_check_f cf; 703 gfc_check_f cf;
700 gfc_simplify_f sf; 704 gfc_simplify_f sf;
701 gfc_resolve_f rf; 705 gfc_resolve_f rf;
702 706
703 cf.f3ml = check; 707 cf.f5ml = check;
704 sf.f3 = simplify; 708 sf.f5 = simplify;
705 rf.f3 = resolve; 709 rf.f5 = resolve;
706 710
707 add_sym (name, id, cl, actual_ok, type, kind, standard, cf, sf, rf, 711 add_sym (name, id, cl, actual_ok, type, kind, standard, cf, sf, rf,
708 a1, type1, kind1, optional1, INTENT_IN, 712 a1, type1, kind1, optional1, INTENT_IN,
709 a2, type2, kind2, optional2, INTENT_IN, 713 a2, type2, kind2, optional2, INTENT_IN,
710 a3, type3, kind3, optional3, INTENT_IN, 714 a3, type3, kind3, optional3, INTENT_IN,
715 a4, type4, kind4, optional4, INTENT_IN,
716 a5, type5, kind5, optional5, INTENT_IN,
711 (void *) 0); 717 (void *) 0);
712 } 718 }
713 719
714 720
715 /* MINVAL, MAXVAL, PRODUCT, and SUM also get special treatment because 721 /* MINVAL, MAXVAL, PRODUCT, and SUM also get special treatment because
852 sym_intent intent1, const char *a2, bt type2, int kind2, 858 sym_intent intent1, const char *a2, bt type2, int kind2,
853 int optional2, sym_intent intent2, const char *a3, bt type3, 859 int optional2, sym_intent intent2, const char *a3, bt type3,
854 int kind3, int optional3, sym_intent intent3, const char *a4, 860 int kind3, int optional3, sym_intent intent3, const char *a4,
855 bt type4, int kind4, int optional4, sym_intent intent4, 861 bt type4, int kind4, int optional4, sym_intent intent4,
856 const char *a5, bt type5, int kind5, int optional5, 862 const char *a5, bt type5, int kind5, int optional5,
857 sym_intent intent5) 863 sym_intent intent5)
858 { 864 {
859 gfc_check_f cf; 865 gfc_check_f cf;
860 gfc_simplify_f sf; 866 gfc_simplify_f sf;
861 gfc_resolve_f rf; 867 gfc_resolve_f rf;
862 868
1221 /* Add intrinsic functions. */ 1227 /* Add intrinsic functions. */
1222 1228
1223 static void 1229 static void
1224 add_functions (void) 1230 add_functions (void)
1225 { 1231 {
1226 /* Argument names as in the standard (to be used as argument keywords). */ 1232 /* Argument names. These are used as argument keywords and so need to
1233 match the documentation. Please keep this list in sorted order. */
1227 const char 1234 const char
1228 *a = "a", *f = "field", *pt = "pointer", *tg = "target", 1235 *a = "a", *a1 = "a1", *a2 = "a2", *ar = "array", *b = "b",
1229 *b = "b", *m = "matrix", *ma = "matrix_a", *mb = "matrix_b", 1236 *bck = "back", *bd = "boundary", *c = "c", *c_ptr_1 = "c_ptr_1",
1230 *c = "c", *n = "n", *ncopies= "ncopies", *pos = "pos", *bck = "back", 1237 *c_ptr_2 = "c_ptr_2", *ca = "coarray", *com = "command",
1231 *i = "i", *v = "vector", *va = "vector_a", *vb = "vector_b", 1238 *dist = "distance", *dm = "dim", *f = "field", *failed="failed",
1232 *j = "j", *a1 = "a1", *fs = "fsource", *ts = "tsource", 1239 *fs = "fsource", *han = "handler", *i = "i",
1233 *l = "l", *a2 = "a2", *mo = "mold", *ord = "order", 1240 *image = "image", *j = "j", *kind = "kind",
1234 *p = "p", *ar = "array", *shp = "shape", *src = "source", 1241 *l = "l", *ln = "len", *level = "level", *m = "matrix", *ma = "matrix_a",
1235 *r = "r", *bd = "boundary", *pad = "pad", *set = "set", 1242 *mb = "matrix_b", *md = "mode", *mo = "mold", *msk = "mask",
1236 *s = "s", *dm = "dim", *kind = "kind", *msk = "mask", 1243 *n = "n", *ncopies= "ncopies", *nm = "name", *num = "number",
1237 *x = "x", *sh = "shift", *stg = "string", *ssg = "substring", 1244 *ord = "order", *p = "p", *p1 = "path1", *p2 = "path2",
1238 *y = "y", *sz = "size", *sta = "string_a", *stb = "string_b", 1245 *pad = "pad", *pid = "pid", *pos = "pos", *pt = "pointer",
1239 *z = "z", *ln = "len", *ut = "unit", *han = "handler", 1246 *r = "r", *s = "s", *set = "set", *sh = "shift", *shp = "shape",
1240 *num = "number", *tm = "time", *nm = "name", *md = "mode", 1247 *sig = "sig", *src = "source", *ssg = "substring",
1241 *vl = "values", *p1 = "path1", *p2 = "path2", *com = "command", 1248 *sta = "string_a", *stb = "string_b", *stg = "string",
1242 *ca = "coarray", *sub = "sub", *dist = "distance", *failed="failed", 1249 *sub = "sub", *sz = "size", *tg = "target", *team = "team", *tm = "time",
1243 *c_ptr_1 = "c_ptr_1", *c_ptr_2 = "c_ptr_2"; 1250 *ts = "tsource", *ut = "unit", *v = "vector", *va = "vector_a",
1251 *vb = "vector_b", *vl = "values", *x = "x", *y = "y", *z = "z";
1244 1252
1245 int di, dr, dd, dl, dc, dz, ii; 1253 int di, dr, dd, dl, dc, dz, ii;
1246 1254
1247 di = gfc_default_integer_kind; 1255 di = gfc_default_integer_kind;
1248 dr = gfc_default_real_kind; 1256 dr = gfc_default_real_kind;
1274 1282
1275 add_sym_1 ("cabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77, 1283 add_sym_1 ("cabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77,
1276 NULL, gfc_simplify_abs, gfc_resolve_abs, 1284 NULL, gfc_simplify_abs, gfc_resolve_abs,
1277 a, BT_COMPLEX, dz, REQUIRED); 1285 a, BT_COMPLEX, dz, REQUIRED);
1278 1286
1279 add_sym_1 ("zabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU, 1287 add_sym_1 ("zabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU,
1280 NULL, gfc_simplify_abs, gfc_resolve_abs, 1288 NULL, gfc_simplify_abs, gfc_resolve_abs,
1281 a, BT_COMPLEX, dd, REQUIRED); 1289 a, BT_COMPLEX, dd, REQUIRED);
1282 1290
1283 make_alias ("cdabs", GFC_STD_GNU); 1291 make_alias ("cdabs", GFC_STD_GNU);
1284 1292
1285 make_generic ("abs", GFC_ISYM_ABS, GFC_STD_F77); 1293 make_generic ("abs", GFC_ISYM_ABS, GFC_STD_F77);
1336 z, BT_COMPLEX, dz, REQUIRED); 1344 z, BT_COMPLEX, dz, REQUIRED);
1337 1345
1338 make_alias ("imag", GFC_STD_GNU); 1346 make_alias ("imag", GFC_STD_GNU);
1339 make_alias ("imagpart", GFC_STD_GNU); 1347 make_alias ("imagpart", GFC_STD_GNU);
1340 1348
1341 add_sym_1 ("dimag", GFC_ISYM_AIMAG, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU, 1349 add_sym_1 ("dimag", GFC_ISYM_AIMAG, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU,
1342 NULL, gfc_simplify_aimag, gfc_resolve_aimag, 1350 NULL, gfc_simplify_aimag, gfc_resolve_aimag,
1343 z, BT_COMPLEX, dd, REQUIRED); 1351 z, BT_COMPLEX, dd, REQUIRED);
1344 1352
1345 make_generic ("aimag", GFC_ISYM_AIMAG, GFC_STD_F77); 1353 make_generic ("aimag", GFC_ISYM_AIMAG, GFC_STD_F77);
1346 1354
1347 add_sym_2 ("aint", GFC_ISYM_AINT, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77, 1355 add_sym_2 ("aint", GFC_ISYM_AINT, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77,
1389 add_sym_1 ("dasin", GFC_ISYM_ASIN, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_F77, 1397 add_sym_1 ("dasin", GFC_ISYM_ASIN, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_F77,
1390 gfc_check_fn_d, gfc_simplify_asin, gfc_resolve_asin, 1398 gfc_check_fn_d, gfc_simplify_asin, gfc_resolve_asin,
1391 x, BT_REAL, dd, REQUIRED); 1399 x, BT_REAL, dd, REQUIRED);
1392 1400
1393 make_generic ("asin", GFC_ISYM_ASIN, GFC_STD_F77); 1401 make_generic ("asin", GFC_ISYM_ASIN, GFC_STD_F77);
1394 1402
1395 add_sym_1 ("asinh", GFC_ISYM_ASINH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, 1403 add_sym_1 ("asinh", GFC_ISYM_ASINH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr,
1396 GFC_STD_F2008, gfc_check_fn_rc2008, gfc_simplify_asinh, 1404 GFC_STD_F2008, gfc_check_fn_rc2008, gfc_simplify_asinh,
1397 gfc_resolve_asinh, x, BT_REAL, dr, REQUIRED); 1405 gfc_resolve_asinh, x, BT_REAL, dr, REQUIRED);
1398 1406
1399 add_sym_1 ("dasinh", GFC_ISYM_ASINH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU, 1407 add_sym_1 ("dasinh", GFC_ISYM_ASINH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU,
1420 add_sym_2 ("atan", GFC_ISYM_ATAN2, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F2008, 1428 add_sym_2 ("atan", GFC_ISYM_ATAN2, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F2008,
1421 gfc_check_atan_2, gfc_simplify_atan2, gfc_resolve_atan2, 1429 gfc_check_atan_2, gfc_simplify_atan2, gfc_resolve_atan2,
1422 y, BT_REAL, dr, REQUIRED, x, BT_REAL, dr, REQUIRED); 1430 y, BT_REAL, dr, REQUIRED, x, BT_REAL, dr, REQUIRED);
1423 1431
1424 make_generic ("atan", GFC_ISYM_ATAN, GFC_STD_F77); 1432 make_generic ("atan", GFC_ISYM_ATAN, GFC_STD_F77);
1425 1433
1426 add_sym_1 ("atanh", GFC_ISYM_ATANH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, 1434 add_sym_1 ("atanh", GFC_ISYM_ATANH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr,
1427 GFC_STD_F2008, gfc_check_fn_rc2008, gfc_simplify_atanh, 1435 GFC_STD_F2008, gfc_check_fn_rc2008, gfc_simplify_atanh,
1428 gfc_resolve_atanh, x, BT_REAL, dr, REQUIRED); 1436 gfc_resolve_atanh, x, BT_REAL, dr, REQUIRED);
1429 1437
1430 add_sym_1 ("datanh", GFC_ISYM_ATANH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU, 1438 add_sym_1 ("datanh", GFC_ISYM_ATANH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_GNU,
1440 add_sym_2 ("datan2", GFC_ISYM_ATAN2, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_F77, 1448 add_sym_2 ("datan2", GFC_ISYM_ATAN2, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_F77,
1441 gfc_check_datan2, gfc_simplify_atan2, gfc_resolve_atan2, 1449 gfc_check_datan2, gfc_simplify_atan2, gfc_resolve_atan2,
1442 y, BT_REAL, dd, REQUIRED, x, BT_REAL, dd, REQUIRED); 1450 y, BT_REAL, dd, REQUIRED, x, BT_REAL, dd, REQUIRED);
1443 1451
1444 make_generic ("atan2", GFC_ISYM_ATAN2, GFC_STD_F77); 1452 make_generic ("atan2", GFC_ISYM_ATAN2, GFC_STD_F77);
1445 1453
1446 /* Bessel and Neumann functions for G77 compatibility. */ 1454 /* Bessel and Neumann functions for G77 compatibility. */
1447 add_sym_1 ("besj0", GFC_ISYM_J0, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU, 1455 add_sym_1 ("besj0", GFC_ISYM_J0, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU,
1448 gfc_check_fn_r, gfc_simplify_bessel_j0, gfc_resolve_g77_math1, 1456 gfc_check_fn_r, gfc_simplify_bessel_j0, gfc_resolve_g77_math1,
1449 x, BT_REAL, dr, REQUIRED); 1457 x, BT_REAL, dr, REQUIRED);
1450 1458
1605 x, BT_UNKNOWN, dr, REQUIRED, y, BT_UNKNOWN, dr, OPTIONAL, 1613 x, BT_UNKNOWN, dr, REQUIRED, y, BT_UNKNOWN, dr, OPTIONAL,
1606 kind, BT_INTEGER, di, OPTIONAL); 1614 kind, BT_INTEGER, di, OPTIONAL);
1607 1615
1608 make_generic ("cmplx", GFC_ISYM_CMPLX, GFC_STD_F77); 1616 make_generic ("cmplx", GFC_ISYM_CMPLX, GFC_STD_F77);
1609 1617
1610 add_sym_0 ("command_argument_count", GFC_ISYM_COMMAND_ARGUMENT_COUNT, CLASS_INQUIRY, 1618 add_sym_0 ("command_argument_count", GFC_ISYM_COMMAND_ARGUMENT_COUNT, CLASS_INQUIRY,
1611 ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2003, NULL, NULL, NULL); 1619 ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2003, NULL, NULL, NULL);
1612 1620
1613 make_generic ("command_argument_count", GFC_ISYM_COMMAND_ARGUMENT_COUNT, 1621 make_generic ("command_argument_count", GFC_ISYM_COMMAND_ARGUMENT_COUNT,
1614 GFC_STD_F2003); 1622 GFC_STD_F2003);
1615 1623
1631 add_sym_1 ("conjg", GFC_ISYM_CONJG, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dz, GFC_STD_F77, 1639 add_sym_1 ("conjg", GFC_ISYM_CONJG, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dz, GFC_STD_F77,
1632 gfc_check_fn_c, gfc_simplify_conjg, gfc_resolve_conjg, 1640 gfc_check_fn_c, gfc_simplify_conjg, gfc_resolve_conjg,
1633 z, BT_COMPLEX, dz, REQUIRED); 1641 z, BT_COMPLEX, dz, REQUIRED);
1634 1642
1635 add_sym_1 ("dconjg", GFC_ISYM_CONJG, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dd, GFC_STD_GNU, 1643 add_sym_1 ("dconjg", GFC_ISYM_CONJG, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dd, GFC_STD_GNU,
1636 NULL, gfc_simplify_conjg, gfc_resolve_conjg, 1644 NULL, gfc_simplify_conjg, gfc_resolve_conjg,
1637 z, BT_COMPLEX, dd, REQUIRED); 1645 z, BT_COMPLEX, dd, REQUIRED);
1638 1646
1639 make_generic ("conjg", GFC_ISYM_CONJG, GFC_STD_F77); 1647 make_generic ("conjg", GFC_ISYM_CONJG, GFC_STD_F77);
1640 1648
1641 add_sym_1 ("cos", GFC_ISYM_COS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77, 1649 add_sym_1 ("cos", GFC_ISYM_COS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77,
1649 add_sym_1 ("ccos", GFC_ISYM_COS, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dz, GFC_STD_F77, 1657 add_sym_1 ("ccos", GFC_ISYM_COS, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dz, GFC_STD_F77,
1650 NULL, gfc_simplify_cos, gfc_resolve_cos, 1658 NULL, gfc_simplify_cos, gfc_resolve_cos,
1651 x, BT_COMPLEX, dz, REQUIRED); 1659 x, BT_COMPLEX, dz, REQUIRED);
1652 1660
1653 add_sym_1 ("zcos", GFC_ISYM_COS, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dd, GFC_STD_GNU, 1661 add_sym_1 ("zcos", GFC_ISYM_COS, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dd, GFC_STD_GNU,
1654 NULL, gfc_simplify_cos, gfc_resolve_cos, 1662 NULL, gfc_simplify_cos, gfc_resolve_cos,
1655 x, BT_COMPLEX, dd, REQUIRED); 1663 x, BT_COMPLEX, dd, REQUIRED);
1656 1664
1657 make_alias ("cdcos", GFC_STD_GNU); 1665 make_alias ("cdcos", GFC_STD_GNU);
1658 1666
1659 make_generic ("cos", GFC_ISYM_COS, GFC_STD_F77); 1667 make_generic ("cos", GFC_ISYM_COS, GFC_STD_F77);
1752 sh, BT_INTEGER, di, REQUIRED); 1760 sh, BT_INTEGER, di, REQUIRED);
1753 1761
1754 make_generic ("dshiftr", GFC_ISYM_DSHIFTR, GFC_STD_F2008); 1762 make_generic ("dshiftr", GFC_ISYM_DSHIFTR, GFC_STD_F2008);
1755 1763
1756 add_sym_4 ("eoshift", GFC_ISYM_EOSHIFT, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95, 1764 add_sym_4 ("eoshift", GFC_ISYM_EOSHIFT, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95,
1757 gfc_check_eoshift, NULL, gfc_resolve_eoshift, 1765 gfc_check_eoshift, gfc_simplify_eoshift, gfc_resolve_eoshift,
1758 ar, BT_REAL, dr, REQUIRED, sh, BT_INTEGER, ii, REQUIRED, 1766 ar, BT_REAL, dr, REQUIRED, sh, BT_INTEGER, ii, REQUIRED,
1759 bd, BT_REAL, dr, OPTIONAL, dm, BT_INTEGER, ii, OPTIONAL); 1767 bd, BT_REAL, dr, OPTIONAL, dm, BT_INTEGER, ii, OPTIONAL);
1760 1768
1761 make_generic ("eoshift", GFC_ISYM_EOSHIFT, GFC_STD_F95); 1769 make_generic ("eoshift", GFC_ISYM_EOSHIFT, GFC_STD_F95);
1762 1770
1818 add_sym_1 ("cexp", GFC_ISYM_EXP, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dz, GFC_STD_F77, 1826 add_sym_1 ("cexp", GFC_ISYM_EXP, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dz, GFC_STD_F77,
1819 NULL, gfc_simplify_exp, gfc_resolve_exp, 1827 NULL, gfc_simplify_exp, gfc_resolve_exp,
1820 x, BT_COMPLEX, dz, REQUIRED); 1828 x, BT_COMPLEX, dz, REQUIRED);
1821 1829
1822 add_sym_1 ("zexp", GFC_ISYM_EXP, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dd, GFC_STD_GNU, 1830 add_sym_1 ("zexp", GFC_ISYM_EXP, CLASS_ELEMENTAL, ACTUAL_YES, BT_COMPLEX, dd, GFC_STD_GNU,
1823 NULL, gfc_simplify_exp, gfc_resolve_exp, 1831 NULL, gfc_simplify_exp, gfc_resolve_exp,
1824 x, BT_COMPLEX, dd, REQUIRED); 1832 x, BT_COMPLEX, dd, REQUIRED);
1825 1833
1826 make_alias ("cdexp", GFC_STD_GNU); 1834 make_alias ("cdexp", GFC_STD_GNU);
1827 1835
1828 make_generic ("exp", GFC_ISYM_EXP, GFC_STD_F77); 1836 make_generic ("exp", GFC_ISYM_EXP, GFC_STD_F77);
1839 gfc_resolve_extends_type_of, 1847 gfc_resolve_extends_type_of,
1840 a, BT_UNKNOWN, 0, REQUIRED, 1848 a, BT_UNKNOWN, 0, REQUIRED,
1841 mo, BT_UNKNOWN, 0, REQUIRED); 1849 mo, BT_UNKNOWN, 0, REQUIRED);
1842 1850
1843 add_sym_2 ("failed_images", GFC_ISYM_FAILED_IMAGES, CLASS_TRANSFORMATIONAL, 1851 add_sym_2 ("failed_images", GFC_ISYM_FAILED_IMAGES, CLASS_TRANSFORMATIONAL,
1844 ACTUAL_NO, BT_INTEGER, dd, GFC_STD_F2008_TS, 1852 ACTUAL_NO, BT_INTEGER, dd, GFC_STD_F2018,
1845 gfc_check_failed_or_stopped_images, 1853 gfc_check_failed_or_stopped_images,
1846 gfc_simplify_failed_or_stopped_images, 1854 gfc_simplify_failed_or_stopped_images,
1847 gfc_resolve_failed_images, "team", BT_VOID, di, OPTIONAL, 1855 gfc_resolve_failed_images, team, BT_VOID, di, OPTIONAL,
1848 "kind", BT_INTEGER, di, OPTIONAL); 1856 kind, BT_INTEGER, di, OPTIONAL);
1849 1857
1850 add_sym_0 ("fdate", GFC_ISYM_FDATE, CLASS_IMPURE, ACTUAL_NO, BT_CHARACTER, 1858 add_sym_0 ("fdate", GFC_ISYM_FDATE, CLASS_IMPURE, ACTUAL_NO, BT_CHARACTER,
1851 dc, GFC_STD_GNU, NULL, NULL, gfc_resolve_fdate); 1859 dc, GFC_STD_GNU, NULL, NULL, gfc_resolve_fdate);
1852 1860
1853 make_generic ("fdate", GFC_ISYM_FDATE, GFC_STD_GNU); 1861 make_generic ("fdate", GFC_ISYM_FDATE, GFC_STD_GNU);
1936 add_sym_0 ("getpid", GFC_ISYM_GETPID, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, 1944 add_sym_0 ("getpid", GFC_ISYM_GETPID, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER,
1937 di, GFC_STD_GNU, NULL, NULL, gfc_resolve_getpid); 1945 di, GFC_STD_GNU, NULL, NULL, gfc_resolve_getpid);
1938 1946
1939 make_generic ("getpid", GFC_ISYM_GETPID, GFC_STD_GNU); 1947 make_generic ("getpid", GFC_ISYM_GETPID, GFC_STD_GNU);
1940 1948
1949 add_sym_1 ("get_team", GFC_ISYM_GET_TEAM, CLASS_TRANSFORMATIONAL,
1950 ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2018,
1951 gfc_check_get_team, NULL, gfc_resolve_get_team,
1952 level, BT_INTEGER, di, OPTIONAL);
1953
1941 add_sym_0 ("getuid", GFC_ISYM_GETUID, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, 1954 add_sym_0 ("getuid", GFC_ISYM_GETUID, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER,
1942 di, GFC_STD_GNU, NULL, NULL, gfc_resolve_getuid); 1955 di, GFC_STD_GNU, NULL, NULL, gfc_resolve_getuid);
1943 1956
1944 make_generic ("getuid", GFC_ISYM_GETUID, GFC_STD_GNU); 1957 make_generic ("getuid", GFC_ISYM_GETUID, GFC_STD_GNU);
1945 1958
2087 add_sym_2 ("image_index", GFC_ISYM_IMAGE_INDEX, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2008, 2100 add_sym_2 ("image_index", GFC_ISYM_IMAGE_INDEX, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2008,
2088 gfc_check_image_index, gfc_simplify_image_index, gfc_resolve_image_index, 2101 gfc_check_image_index, gfc_simplify_image_index, gfc_resolve_image_index,
2089 ca, BT_REAL, dr, REQUIRED, sub, BT_INTEGER, ii, REQUIRED); 2102 ca, BT_REAL, dr, REQUIRED, sub, BT_INTEGER, ii, REQUIRED);
2090 2103
2091 add_sym_2 ("image_status", GFC_ISYM_IMAGE_STATUS, CLASS_ELEMENTAL, ACTUAL_NO, 2104 add_sym_2 ("image_status", GFC_ISYM_IMAGE_STATUS, CLASS_ELEMENTAL, ACTUAL_NO,
2092 BT_INTEGER, di, GFC_STD_F2008_TS, gfc_check_image_status, 2105 BT_INTEGER, di, GFC_STD_F2018, gfc_check_image_status,
2093 gfc_simplify_image_status, gfc_resolve_image_status, "image", 2106 gfc_simplify_image_status, gfc_resolve_image_status, image,
2094 BT_INTEGER, di, REQUIRED, "team", BT_VOID, di, OPTIONAL); 2107 BT_INTEGER, di, REQUIRED, team, BT_VOID, di, OPTIONAL);
2095 2108
2096 /* The resolution function for INDEX is called gfc_resolve_index_func 2109 /* The resolution function for INDEX is called gfc_resolve_index_func
2097 because the name gfc_resolve_index is already used in resolve.c. */ 2110 because the name gfc_resolve_index is already used in resolve.c. */
2098 add_sym_4 ("index", GFC_ISYM_INDEX, CLASS_ELEMENTAL, ACTUAL_YES, 2111 add_sym_4 ("index", GFC_ISYM_INDEX, CLASS_ELEMENTAL, ACTUAL_YES,
2099 BT_INTEGER, di, GFC_STD_F77, 2112 BT_INTEGER, di, GFC_STD_F77,
2240 } 2253 }
2241 2254
2242 make_generic ("ishftc", GFC_ISYM_ISHFTC, GFC_STD_F95); 2255 make_generic ("ishftc", GFC_ISYM_ISHFTC, GFC_STD_F95);
2243 2256
2244 add_sym_2 ("kill", GFC_ISYM_KILL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, 2257 add_sym_2 ("kill", GFC_ISYM_KILL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER,
2245 di, GFC_STD_GNU, gfc_check_kill, NULL, gfc_resolve_kill, 2258 di, GFC_STD_GNU, gfc_check_kill, NULL, NULL,
2246 a, BT_INTEGER, di, REQUIRED, b, BT_INTEGER, di, REQUIRED); 2259 pid, BT_INTEGER, di, REQUIRED, sig, BT_INTEGER, di, REQUIRED);
2247 2260
2248 make_generic ("kill", GFC_ISYM_KILL, GFC_STD_GNU); 2261 make_generic ("kill", GFC_ISYM_KILL, GFC_STD_GNU);
2249 2262
2250 add_sym_1 ("kind", GFC_ISYM_KIND, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, 2263 add_sym_1 ("kind", GFC_ISYM_KIND, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
2251 gfc_check_kind, gfc_simplify_kind, NULL, 2264 gfc_check_kind, gfc_simplify_kind, NULL,
2337 add_sym_2 ("link", GFC_ISYM_LINK, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, di, 2350 add_sym_2 ("link", GFC_ISYM_LINK, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, di,
2338 GFC_STD_GNU, gfc_check_link, NULL, gfc_resolve_link, 2351 GFC_STD_GNU, gfc_check_link, NULL, gfc_resolve_link,
2339 p1, BT_CHARACTER, dc, REQUIRED, p2, BT_CHARACTER, dc, REQUIRED); 2352 p1, BT_CHARACTER, dc, REQUIRED, p2, BT_CHARACTER, dc, REQUIRED);
2340 2353
2341 make_generic ("link", GFC_ISYM_LINK, GFC_STD_GNU); 2354 make_generic ("link", GFC_ISYM_LINK, GFC_STD_GNU);
2342 2355
2343 add_sym_1 ("log", GFC_ISYM_LOG, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F77, 2356 add_sym_1 ("log", GFC_ISYM_LOG, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F77,
2344 gfc_check_fn_rc, gfc_simplify_log, gfc_resolve_log, 2357 gfc_check_fn_rc, gfc_simplify_log, gfc_resolve_log,
2345 x, BT_REAL, dr, REQUIRED); 2358 x, BT_REAL, dr, REQUIRED);
2346 2359
2347 add_sym_1 ("alog", GFC_ISYM_LOG, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77, 2360 add_sym_1 ("alog", GFC_ISYM_LOG, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77,
2453 di, GFC_STD_F95, gfc_check_fn_r, gfc_simplify_maxexponent, NULL, 2466 di, GFC_STD_F95, gfc_check_fn_r, gfc_simplify_maxexponent, NULL,
2454 x, BT_UNKNOWN, dr, REQUIRED); 2467 x, BT_UNKNOWN, dr, REQUIRED);
2455 2468
2456 make_generic ("maxexponent", GFC_ISYM_MAXEXPONENT, GFC_STD_F95); 2469 make_generic ("maxexponent", GFC_ISYM_MAXEXPONENT, GFC_STD_F95);
2457 2470
2458 add_sym_3ml ("maxloc", GFC_ISYM_MAXLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, 2471 add_sym_5ml ("maxloc", GFC_ISYM_MAXLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
2459 gfc_check_minloc_maxloc, NULL, gfc_resolve_maxloc, 2472 gfc_check_minloc_maxloc, gfc_simplify_maxloc, gfc_resolve_maxloc,
2460 ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, 2473 ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
2461 msk, BT_LOGICAL, dl, OPTIONAL); 2474 msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL,
2475 bck, BT_LOGICAL, dl, OPTIONAL);
2462 2476
2463 make_generic ("maxloc", GFC_ISYM_MAXLOC, GFC_STD_F95); 2477 make_generic ("maxloc", GFC_ISYM_MAXLOC, GFC_STD_F95);
2464 2478
2465 add_sym_3red ("maxval", GFC_ISYM_MAXVAL, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95, 2479 add_sym_3red ("maxval", GFC_ISYM_MAXVAL, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95,
2466 gfc_check_minval_maxval, gfc_simplify_maxval, gfc_resolve_maxval, 2480 gfc_check_minval_maxval, gfc_simplify_maxval, gfc_resolve_maxval,
2529 di, GFC_STD_F95, gfc_check_fn_r, gfc_simplify_minexponent, NULL, 2543 di, GFC_STD_F95, gfc_check_fn_r, gfc_simplify_minexponent, NULL,
2530 x, BT_UNKNOWN, dr, REQUIRED); 2544 x, BT_UNKNOWN, dr, REQUIRED);
2531 2545
2532 make_generic ("minexponent", GFC_ISYM_MINEXPONENT, GFC_STD_F95); 2546 make_generic ("minexponent", GFC_ISYM_MINEXPONENT, GFC_STD_F95);
2533 2547
2534 add_sym_3ml ("minloc", GFC_ISYM_MINLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, 2548 add_sym_5ml ("minloc", GFC_ISYM_MINLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
2535 gfc_check_minloc_maxloc, NULL, gfc_resolve_minloc, 2549 gfc_check_minloc_maxloc, gfc_simplify_minloc, gfc_resolve_minloc,
2536 ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, 2550 ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
2537 msk, BT_LOGICAL, dl, OPTIONAL); 2551 msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL,
2552 bck, BT_LOGICAL, dl, OPTIONAL);
2538 2553
2539 make_generic ("minloc", GFC_ISYM_MINLOC, GFC_STD_F95); 2554 make_generic ("minloc", GFC_ISYM_MINLOC, GFC_STD_F95);
2540 2555
2541 add_sym_3red ("minval", GFC_ISYM_MINVAL, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95, 2556 add_sym_3red ("minval", GFC_ISYM_MINVAL, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95,
2542 gfc_check_minval_maxval, gfc_simplify_minval, gfc_resolve_minval, 2557 gfc_check_minval_maxval, gfc_simplify_minval, gfc_resolve_minval,
2698 x, BT_REAL, dr, REQUIRED); 2713 x, BT_REAL, dr, REQUIRED);
2699 2714
2700 make_generic ("range", GFC_ISYM_RANGE, GFC_STD_F95); 2715 make_generic ("range", GFC_ISYM_RANGE, GFC_STD_F95);
2701 2716
2702 add_sym_1 ("rank", GFC_ISYM_RANK, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, 2717 add_sym_1 ("rank", GFC_ISYM_RANK, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di,
2703 GFC_STD_F2008_TS, gfc_check_rank, gfc_simplify_rank, gfc_resolve_rank, 2718 GFC_STD_F2018, gfc_check_rank, gfc_simplify_rank, gfc_resolve_rank,
2704 a, BT_REAL, dr, REQUIRED); 2719 a, BT_REAL, dr, REQUIRED);
2705 make_generic ("rank", GFC_ISYM_RANK, GFC_STD_F2008_TS); 2720 make_generic ("rank", GFC_ISYM_RANK, GFC_STD_F2018);
2706 2721
2707 add_sym_2 ("real", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F77, 2722 add_sym_2 ("real", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F77,
2708 gfc_check_real, gfc_simplify_real, gfc_resolve_real, 2723 gfc_check_real, gfc_simplify_real, gfc_resolve_real,
2709 a, BT_UNKNOWN, dr, REQUIRED, kind, BT_INTEGER, di, OPTIONAL); 2724 a, BT_UNKNOWN, dr, REQUIRED, kind, BT_INTEGER, di, OPTIONAL);
2710 2725
2737 add_sym_2 ("rename", GFC_ISYM_RENAME, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, di, 2752 add_sym_2 ("rename", GFC_ISYM_RENAME, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, di,
2738 GFC_STD_GNU, gfc_check_rename, NULL, gfc_resolve_rename, 2753 GFC_STD_GNU, gfc_check_rename, NULL, gfc_resolve_rename,
2739 p1, BT_CHARACTER, dc, REQUIRED, p2, BT_CHARACTER, dc, REQUIRED); 2754 p1, BT_CHARACTER, dc, REQUIRED, p2, BT_CHARACTER, dc, REQUIRED);
2740 2755
2741 make_generic ("rename", GFC_ISYM_RENAME, GFC_STD_GNU); 2756 make_generic ("rename", GFC_ISYM_RENAME, GFC_STD_GNU);
2742 2757
2743 add_sym_2 ("repeat", GFC_ISYM_REPEAT, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_CHARACTER, dc, GFC_STD_F95, 2758 add_sym_2 ("repeat", GFC_ISYM_REPEAT, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_CHARACTER, dc, GFC_STD_F95,
2744 gfc_check_repeat, gfc_simplify_repeat, gfc_resolve_repeat, 2759 gfc_check_repeat, gfc_simplify_repeat, gfc_resolve_repeat,
2745 stg, BT_CHARACTER, dc, REQUIRED, ncopies, BT_INTEGER, di, REQUIRED); 2760 stg, BT_CHARACTER, dc, REQUIRED, ncopies, BT_INTEGER, di, REQUIRED);
2746 2761
2747 make_generic ("repeat", GFC_ISYM_REPEAT, GFC_STD_F95); 2762 make_generic ("repeat", GFC_ISYM_REPEAT, GFC_STD_F95);
2947 BT_INTEGER, gfc_index_integer_kind, GFC_STD_F2008, 2962 BT_INTEGER, gfc_index_integer_kind, GFC_STD_F2008,
2948 gfc_check_c_sizeof, gfc_simplify_sizeof, NULL, 2963 gfc_check_c_sizeof, gfc_simplify_sizeof, NULL,
2949 x, BT_UNKNOWN, 0, REQUIRED); 2964 x, BT_UNKNOWN, 0, REQUIRED);
2950 make_from_module(); 2965 make_from_module();
2951 2966
2952 /* COMPILER_OPTIONS and COMPILER_VERSION are part of ISO_FORTRAN_ENV. */ 2967 /* COMPILER_OPTIONS and COMPILER_VERSION are part of ISO_FORTRAN_ENV. */
2953 add_sym_0 ("compiler_options", GFC_ISYM_COMPILER_OPTIONS, CLASS_INQUIRY, 2968 add_sym_0 ("compiler_options", GFC_ISYM_COMPILER_OPTIONS, CLASS_INQUIRY,
2954 ACTUAL_NO, BT_CHARACTER, dc, GFC_STD_F2008, 2969 ACTUAL_NO, BT_CHARACTER, dc, GFC_STD_F2008,
2955 NULL, gfc_simplify_compiler_options, NULL); 2970 NULL, gfc_simplify_compiler_options, NULL);
2956 make_from_module(); 2971 make_from_module();
2957 2972
3000 vl, BT_INTEGER, di, REQUIRED, INTENT_OUT); 3015 vl, BT_INTEGER, di, REQUIRED, INTENT_OUT);
3001 3016
3002 make_generic ("stat", GFC_ISYM_STAT, GFC_STD_GNU); 3017 make_generic ("stat", GFC_ISYM_STAT, GFC_STD_GNU);
3003 3018
3004 add_sym_2 ("stopped_images", GFC_ISYM_STOPPED_IMAGES, CLASS_TRANSFORMATIONAL, 3019 add_sym_2 ("stopped_images", GFC_ISYM_STOPPED_IMAGES, CLASS_TRANSFORMATIONAL,
3005 ACTUAL_NO, BT_INTEGER, dd, GFC_STD_F2008_TS, 3020 ACTUAL_NO, BT_INTEGER, dd, GFC_STD_F2018,
3006 gfc_check_failed_or_stopped_images, 3021 gfc_check_failed_or_stopped_images,
3007 gfc_simplify_failed_or_stopped_images, 3022 gfc_simplify_failed_or_stopped_images,
3008 gfc_resolve_stopped_images, "team", BT_VOID, di, OPTIONAL, 3023 gfc_resolve_stopped_images, team, BT_VOID, di, OPTIONAL,
3009 "kind", BT_INTEGER, di, OPTIONAL); 3024 kind, BT_INTEGER, di, OPTIONAL);
3010 3025
3011 add_sym_2 ("storage_size", GFC_ISYM_STORAGE_SIZE, CLASS_INQUIRY, ACTUAL_NO, 3026 add_sym_2 ("storage_size", GFC_ISYM_STORAGE_SIZE, CLASS_INQUIRY, ACTUAL_NO,
3012 BT_INTEGER, di, GFC_STD_F2008, 3027 BT_INTEGER, di, GFC_STD_F2008,
3013 gfc_check_storage_size, gfc_simplify_storage_size, 3028 gfc_check_storage_size, gfc_simplify_storage_size,
3014 gfc_resolve_storage_size, 3029 gfc_resolve_storage_size,
3015 a, BT_UNKNOWN, 0, REQUIRED, 3030 a, BT_UNKNOWN, 0, REQUIRED,
3016 kind, BT_INTEGER, di, OPTIONAL); 3031 kind, BT_INTEGER, di, OPTIONAL);
3017 3032
3018 add_sym_3red ("sum", GFC_ISYM_SUM, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95, 3033 add_sym_3red ("sum", GFC_ISYM_SUM, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95,
3019 gfc_check_product_sum, gfc_simplify_sum, gfc_resolve_sum, 3034 gfc_check_product_sum, gfc_simplify_sum, gfc_resolve_sum,
3020 ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, 3035 ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
3021 msk, BT_LOGICAL, dl, OPTIONAL); 3036 msk, BT_LOGICAL, dl, OPTIONAL);
3022 3037
3051 add_sym_1 ("dtanh", GFC_ISYM_TANH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_F77, 3066 add_sym_1 ("dtanh", GFC_ISYM_TANH, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dd, GFC_STD_F77,
3052 gfc_check_fn_d, gfc_simplify_tanh, gfc_resolve_tanh, 3067 gfc_check_fn_d, gfc_simplify_tanh, gfc_resolve_tanh,
3053 x, BT_REAL, dd, REQUIRED); 3068 x, BT_REAL, dd, REQUIRED);
3054 3069
3055 make_generic ("tanh", GFC_ISYM_TANH, GFC_STD_F77); 3070 make_generic ("tanh", GFC_ISYM_TANH, GFC_STD_F77);
3071
3072 add_sym_1 ("team_number", GFC_ISYM_TEAM_NUMBER, CLASS_TRANSFORMATIONAL,
3073 ACTUAL_YES, BT_INTEGER, di, GFC_STD_F2018,
3074 gfc_check_team_number, NULL, gfc_resolve_team_number,
3075 team, BT_DERIVED, di, OPTIONAL);
3056 3076
3057 add_sym_3 ("this_image", GFC_ISYM_THIS_IMAGE, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2008, 3077 add_sym_3 ("this_image", GFC_ISYM_THIS_IMAGE, CLASS_INQUIRY, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F2008,
3058 gfc_check_this_image, gfc_simplify_this_image, gfc_resolve_this_image, 3078 gfc_check_this_image, gfc_simplify_this_image, gfc_resolve_this_image,
3059 ca, BT_REAL, dr, OPTIONAL, dm, BT_INTEGER, ii, OPTIONAL, 3079 ca, BT_REAL, dr, OPTIONAL, dm, BT_INTEGER, ii, OPTIONAL,
3060 dist, BT_INTEGER, di, OPTIONAL); 3080 dist, BT_INTEGER, di, OPTIONAL);
3148 gfc_check_verify, gfc_simplify_verify, gfc_resolve_verify, 3168 gfc_check_verify, gfc_simplify_verify, gfc_resolve_verify,
3149 stg, BT_CHARACTER, dc, REQUIRED, set, BT_CHARACTER, dc, REQUIRED, 3169 stg, BT_CHARACTER, dc, REQUIRED, set, BT_CHARACTER, dc, REQUIRED,
3150 bck, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL); 3170 bck, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL);
3151 3171
3152 make_generic ("verify", GFC_ISYM_VERIFY, GFC_STD_F95); 3172 make_generic ("verify", GFC_ISYM_VERIFY, GFC_STD_F95);
3153 3173
3154 add_sym_1 ("loc", GFC_ISYM_LOC, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, ii, 3174 add_sym_1 ("loc", GFC_ISYM_LOC, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, ii,
3155 GFC_STD_GNU, gfc_check_loc, NULL, gfc_resolve_loc, 3175 GFC_STD_GNU, gfc_check_loc, NULL, gfc_resolve_loc,
3156 x, BT_UNKNOWN, 0, REQUIRED); 3176 x, BT_UNKNOWN, 0, REQUIRED);
3157 3177
3158 make_generic ("loc", GFC_ISYM_LOC, GFC_STD_GNU); 3178 make_generic ("loc", GFC_ISYM_LOC, GFC_STD_GNU);
3159 3179
3160 if (flag_dec_math) 3180 if (flag_dec_math)
3161 { 3181 {
3162 add_sym_1 ("acosd", GFC_ISYM_ACOS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, 3182 add_sym_1 ("acosd", GFC_ISYM_ACOS, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL,
3280 /* Add intrinsic subroutines. */ 3300 /* Add intrinsic subroutines. */
3281 3301
3282 static void 3302 static void
3283 add_subroutines (void) 3303 add_subroutines (void)
3284 { 3304 {
3285 /* Argument names as in the standard (to be used as argument keywords). */ 3305 /* Argument names. These are used as argument keywords and so need to
3286 const char 3306 match the documentation. Please keep this list in sorted order. */
3287 *a = "a", *h = "harvest", *dt = "date", *vl = "values", *pt = "put", 3307 static const char
3288 *c = "count", *tm = "time", *tp = "topos", *gt = "get", 3308 *a = "a", *c = "count", *cm = "count_max", *com = "command",
3289 *t = "to", *zn = "zone", *fp = "frompos", *cm = "count_max", 3309 *cr = "count_rate", *dt = "date", *errmsg = "errmsg", *f = "from",
3290 *f = "from", *sz = "size", *ln = "len", *cr = "count_rate", 3310 *fp = "frompos", *gt = "get", *h = "harvest", *han = "handler",
3291 *com = "command", *length = "length", *st = "status", 3311 *length = "length", *ln = "len", *md = "mode", *msk = "mask",
3292 *val = "value", *num = "number", *name = "name", 3312 *name = "name", *num = "number", *of = "offset", *old = "old",
3293 *trim_name = "trim_name", *ut = "unit", *han = "handler", 3313 *p1 = "path1", *p2 = "path2", *pid = "pid", *pos = "pos",
3294 *sec = "seconds", *res = "result", *of = "offset", *md = "mode", 3314 *pt = "put", *ptr = "ptr", *res = "result",
3295 *whence = "whence", *pos = "pos", *ptr = "ptr", *p1 = "path1", 3315 *result_image = "result_image", *sec = "seconds", *sig = "sig",
3296 *p2 = "path2", *msk = "mask", *old = "old", *result_image = "result_image", 3316 *st = "status", *stat = "stat", *sz = "size", *t = "to",
3297 *stat = "stat", *errmsg = "errmsg"; 3317 *tm = "time", *tp = "topos", *trim_name = "trim_name", *ut = "unit",
3298 3318 *val = "value", *vl = "values", *whence = "whence", *zn = "zone";
3319
3299 int di, dr, dc, dl, ii; 3320 int di, dr, dc, dl, ii;
3300 3321
3301 di = gfc_default_integer_kind; 3322 di = gfc_default_integer_kind;
3302 dr = gfc_default_real_kind; 3323 dr = gfc_default_real_kind;
3303 dc = gfc_default_character_kind; 3324 dc = gfc_default_character_kind;
3321 "value", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3342 "value", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3322 "atom", BT_INTEGER, di, REQUIRED, INTENT_IN, 3343 "atom", BT_INTEGER, di, REQUIRED, INTENT_IN,
3323 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3344 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3324 3345
3325 add_sym_5s ("atomic_cas", GFC_ISYM_ATOMIC_CAS, CLASS_ATOMIC, 3346 add_sym_5s ("atomic_cas", GFC_ISYM_ATOMIC_CAS, CLASS_ATOMIC,
3326 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3347 BT_UNKNOWN, 0, GFC_STD_F2018,
3327 gfc_check_atomic_cas, NULL, NULL, 3348 gfc_check_atomic_cas, NULL, NULL,
3328 "atom", BT_INTEGER, di, REQUIRED, INTENT_INOUT, 3349 "atom", BT_INTEGER, di, REQUIRED, INTENT_INOUT,
3329 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3350 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3330 "compare", BT_INTEGER, di, REQUIRED, INTENT_IN, 3351 "compare", BT_INTEGER, di, REQUIRED, INTENT_IN,
3331 "new", BT_INTEGER, di, REQUIRED, INTENT_IN, 3352 "new", BT_INTEGER, di, REQUIRED, INTENT_IN,
3332 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3353 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3333 3354
3334 add_sym_3s ("atomic_add", GFC_ISYM_ATOMIC_ADD, CLASS_ATOMIC, 3355 add_sym_3s ("atomic_add", GFC_ISYM_ATOMIC_ADD, CLASS_ATOMIC,
3335 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3356 BT_UNKNOWN, 0, GFC_STD_F2018,
3336 gfc_check_atomic_op, NULL, NULL, 3357 gfc_check_atomic_op, NULL, NULL,
3337 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3358 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3338 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3359 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3339 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3360 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3340 3361
3341 add_sym_3s ("atomic_and", GFC_ISYM_ATOMIC_AND, CLASS_ATOMIC, 3362 add_sym_3s ("atomic_and", GFC_ISYM_ATOMIC_AND, CLASS_ATOMIC,
3342 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3363 BT_UNKNOWN, 0, GFC_STD_F2018,
3343 gfc_check_atomic_op, NULL, NULL, 3364 gfc_check_atomic_op, NULL, NULL,
3344 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3365 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3345 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3366 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3346 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3367 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3347 3368
3348 add_sym_3s ("atomic_or", GFC_ISYM_ATOMIC_OR, CLASS_ATOMIC, 3369 add_sym_3s ("atomic_or", GFC_ISYM_ATOMIC_OR, CLASS_ATOMIC,
3349 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3370 BT_UNKNOWN, 0, GFC_STD_F2018,
3350 gfc_check_atomic_op, NULL, NULL, 3371 gfc_check_atomic_op, NULL, NULL,
3351 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3372 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3352 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3373 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3353 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3374 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3354 3375
3355 add_sym_3s ("atomic_xor", GFC_ISYM_ATOMIC_XOR, CLASS_ATOMIC, 3376 add_sym_3s ("atomic_xor", GFC_ISYM_ATOMIC_XOR, CLASS_ATOMIC,
3356 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3377 BT_UNKNOWN, 0, GFC_STD_F2018,
3357 gfc_check_atomic_op, NULL, NULL, 3378 gfc_check_atomic_op, NULL, NULL,
3358 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3379 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3359 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3380 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3360 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3381 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3361 3382
3362 add_sym_4s ("atomic_fetch_add", GFC_ISYM_ATOMIC_FETCH_ADD, CLASS_ATOMIC, 3383 add_sym_4s ("atomic_fetch_add", GFC_ISYM_ATOMIC_FETCH_ADD, CLASS_ATOMIC,
3363 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3384 BT_UNKNOWN, 0, GFC_STD_F2018,
3364 gfc_check_atomic_fetch_op, NULL, NULL, 3385 gfc_check_atomic_fetch_op, NULL, NULL,
3365 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3386 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3366 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3387 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3367 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3388 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3368 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3389 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3369 3390
3370 add_sym_4s ("atomic_fetch_and", GFC_ISYM_ATOMIC_FETCH_AND, CLASS_ATOMIC, 3391 add_sym_4s ("atomic_fetch_and", GFC_ISYM_ATOMIC_FETCH_AND, CLASS_ATOMIC,
3371 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3392 BT_UNKNOWN, 0, GFC_STD_F2018,
3372 gfc_check_atomic_fetch_op, NULL, NULL, 3393 gfc_check_atomic_fetch_op, NULL, NULL,
3373 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3394 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3374 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3395 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3375 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3396 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3376 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3397 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3377 3398
3378 add_sym_4s ("atomic_fetch_or", GFC_ISYM_ATOMIC_FETCH_OR, CLASS_ATOMIC, 3399 add_sym_4s ("atomic_fetch_or", GFC_ISYM_ATOMIC_FETCH_OR, CLASS_ATOMIC,
3379 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3400 BT_UNKNOWN, 0, GFC_STD_F2018,
3380 gfc_check_atomic_fetch_op, NULL, NULL, 3401 gfc_check_atomic_fetch_op, NULL, NULL,
3381 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3402 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3382 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3403 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3383 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3404 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3384 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3405 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3385 3406
3386 add_sym_4s ("atomic_fetch_xor", GFC_ISYM_ATOMIC_FETCH_XOR, CLASS_ATOMIC, 3407 add_sym_4s ("atomic_fetch_xor", GFC_ISYM_ATOMIC_FETCH_XOR, CLASS_ATOMIC,
3387 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3408 BT_UNKNOWN, 0, GFC_STD_F2018,
3388 gfc_check_atomic_fetch_op, NULL, NULL, 3409 gfc_check_atomic_fetch_op, NULL, NULL,
3389 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3410 "atom", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3390 "value", BT_INTEGER, di, REQUIRED, INTENT_IN, 3411 "value", BT_INTEGER, di, REQUIRED, INTENT_IN,
3391 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT, 3412 "old", BT_INTEGER, di, REQUIRED, INTENT_OUT,
3392 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3413 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3396 add_sym_1s ("cpu_time", GFC_ISYM_CPU_TIME, CLASS_IMPURE, BT_UNKNOWN, 0, 3417 add_sym_1s ("cpu_time", GFC_ISYM_CPU_TIME, CLASS_IMPURE, BT_UNKNOWN, 0,
3397 GFC_STD_F95, gfc_check_cpu_time, NULL, gfc_resolve_cpu_time, 3418 GFC_STD_F95, gfc_check_cpu_time, NULL, gfc_resolve_cpu_time,
3398 tm, BT_REAL, dr, REQUIRED, INTENT_OUT); 3419 tm, BT_REAL, dr, REQUIRED, INTENT_OUT);
3399 3420
3400 add_sym_3s ("event_query", GFC_ISYM_EVENT_QUERY, CLASS_ATOMIC, 3421 add_sym_3s ("event_query", GFC_ISYM_EVENT_QUERY, CLASS_ATOMIC,
3401 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3422 BT_UNKNOWN, 0, GFC_STD_F2018,
3402 gfc_check_event_query, NULL, gfc_resolve_event_query, 3423 gfc_check_event_query, NULL, gfc_resolve_event_query,
3403 "event", BT_INTEGER, di, REQUIRED, INTENT_IN, 3424 "event", BT_INTEGER, di, REQUIRED, INTENT_IN,
3404 c, BT_INTEGER, di, OPTIONAL, INTENT_IN, 3425 c, BT_INTEGER, di, OPTIONAL, INTENT_IN,
3405 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3426 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3406 3427
3545 make_alias ("imvbits", GFC_STD_GNU); 3566 make_alias ("imvbits", GFC_STD_GNU);
3546 make_alias ("jmvbits", GFC_STD_GNU); 3567 make_alias ("jmvbits", GFC_STD_GNU);
3547 make_alias ("kmvbits", GFC_STD_GNU); 3568 make_alias ("kmvbits", GFC_STD_GNU);
3548 } 3569 }
3549 3570
3571 add_sym_2s ("random_init", GFC_ISYM_RANDOM_INIT, CLASS_IMPURE,
3572 BT_UNKNOWN, 0, GFC_STD_F2018,
3573 gfc_check_random_init, NULL, gfc_resolve_random_init,
3574 "repeatable", BT_LOGICAL, dl, REQUIRED, INTENT_IN,
3575 "image_distinct", BT_LOGICAL, dl, REQUIRED, INTENT_IN);
3576
3550 add_sym_1s ("random_number", GFC_ISYM_RANDOM_NUMBER, CLASS_IMPURE, 3577 add_sym_1s ("random_number", GFC_ISYM_RANDOM_NUMBER, CLASS_IMPURE,
3551 BT_UNKNOWN, 0, GFC_STD_F95, 3578 BT_UNKNOWN, 0, GFC_STD_F95,
3552 gfc_check_random_number, NULL, gfc_resolve_random_number, 3579 gfc_check_random_number, NULL, gfc_resolve_random_number,
3553 h, BT_REAL, dr, REQUIRED, INTENT_OUT); 3580 h, BT_REAL, dr, REQUIRED, INTENT_OUT);
3554 3581
3586 make_vararg (); 3613 make_vararg ();
3587 make_from_module (); 3614 make_from_module ();
3588 3615
3589 /* Coarray collectives. */ 3616 /* Coarray collectives. */
3590 add_sym_4s ("co_broadcast", GFC_ISYM_CO_BROADCAST, CLASS_IMPURE, 3617 add_sym_4s ("co_broadcast", GFC_ISYM_CO_BROADCAST, CLASS_IMPURE,
3591 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3618 BT_UNKNOWN, 0, GFC_STD_F2018,
3592 gfc_check_co_broadcast, NULL, NULL, 3619 gfc_check_co_broadcast, NULL, NULL,
3593 a, BT_REAL, dr, REQUIRED, INTENT_INOUT, 3620 a, BT_REAL, dr, REQUIRED, INTENT_INOUT,
3594 "source_image", BT_INTEGER, di, REQUIRED, INTENT_IN, 3621 "source_image", BT_INTEGER, di, REQUIRED, INTENT_IN,
3595 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT, 3622 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT,
3596 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT); 3623 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT);
3597 3624
3598 add_sym_4s ("co_max", GFC_ISYM_CO_MAX, CLASS_IMPURE, 3625 add_sym_4s ("co_max", GFC_ISYM_CO_MAX, CLASS_IMPURE,
3599 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3626 BT_UNKNOWN, 0, GFC_STD_F2018,
3600 gfc_check_co_minmax, NULL, NULL, 3627 gfc_check_co_minmax, NULL, NULL,
3601 a, BT_REAL, dr, REQUIRED, INTENT_INOUT, 3628 a, BT_REAL, dr, REQUIRED, INTENT_INOUT,
3602 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN, 3629 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN,
3603 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT, 3630 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT,
3604 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT); 3631 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT);
3605 3632
3606 add_sym_4s ("co_min", GFC_ISYM_CO_MIN, CLASS_IMPURE, 3633 add_sym_4s ("co_min", GFC_ISYM_CO_MIN, CLASS_IMPURE,
3607 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3634 BT_UNKNOWN, 0, GFC_STD_F2018,
3608 gfc_check_co_minmax, NULL, NULL, 3635 gfc_check_co_minmax, NULL, NULL,
3609 a, BT_REAL, dr, REQUIRED, INTENT_INOUT, 3636 a, BT_REAL, dr, REQUIRED, INTENT_INOUT,
3610 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN, 3637 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN,
3611 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT, 3638 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT,
3612 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT); 3639 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT);
3613 3640
3614 add_sym_4s ("co_sum", GFC_ISYM_CO_SUM, CLASS_IMPURE, 3641 add_sym_4s ("co_sum", GFC_ISYM_CO_SUM, CLASS_IMPURE,
3615 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3642 BT_UNKNOWN, 0, GFC_STD_F2018,
3616 gfc_check_co_sum, NULL, NULL, 3643 gfc_check_co_sum, NULL, NULL,
3617 a, BT_REAL, dr, REQUIRED, INTENT_INOUT, 3644 a, BT_REAL, dr, REQUIRED, INTENT_INOUT,
3618 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN, 3645 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN,
3619 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT, 3646 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT,
3620 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT); 3647 errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_OUT);
3621 3648
3622 add_sym_5s ("co_reduce", GFC_ISYM_CO_REDUCE, CLASS_IMPURE, 3649 add_sym_5s ("co_reduce", GFC_ISYM_CO_REDUCE, CLASS_IMPURE,
3623 BT_UNKNOWN, 0, GFC_STD_F2008_TS, 3650 BT_UNKNOWN, 0, GFC_STD_F2018,
3624 gfc_check_co_reduce, NULL, NULL, 3651 gfc_check_co_reduce, NULL, NULL,
3625 a, BT_REAL, dr, REQUIRED, INTENT_INOUT, 3652 a, BT_REAL, dr, REQUIRED, INTENT_INOUT,
3626 "operator", BT_INTEGER, di, REQUIRED, INTENT_IN, 3653 "operator", BT_INTEGER, di, REQUIRED, INTENT_IN,
3627 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN, 3654 result_image, BT_INTEGER, di, OPTIONAL, INTENT_IN,
3628 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT, 3655 stat, BT_INTEGER, di, OPTIONAL, INTENT_OUT,
3701 GFC_STD_GNU, gfc_check_hostnm_sub, NULL, gfc_resolve_hostnm_sub, 3728 GFC_STD_GNU, gfc_check_hostnm_sub, NULL, gfc_resolve_hostnm_sub,
3702 c, BT_CHARACTER, dc, REQUIRED, INTENT_OUT, 3729 c, BT_CHARACTER, dc, REQUIRED, INTENT_OUT,
3703 st, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3730 st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3704 3731
3705 add_sym_3s ("kill", GFC_ISYM_KILL, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU, 3732 add_sym_3s ("kill", GFC_ISYM_KILL, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
3706 gfc_check_kill_sub, NULL, gfc_resolve_kill_sub, 3733 gfc_check_kill_sub, NULL, NULL,
3707 c, BT_INTEGER, di, REQUIRED, INTENT_IN, 3734 pid, BT_INTEGER, di, REQUIRED, INTENT_IN,
3708 val, BT_INTEGER, di, REQUIRED, INTENT_IN, 3735 sig, BT_INTEGER, di, REQUIRED, INTENT_IN,
3709 st, BT_INTEGER, di, OPTIONAL, INTENT_OUT); 3736 st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
3710 3737
3711 add_sym_3s ("link", GFC_ISYM_LINK, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU, 3738 add_sym_3s ("link", GFC_ISYM_LINK, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
3712 gfc_check_link_sub, NULL, gfc_resolve_link_sub, 3739 gfc_check_link_sub, NULL, gfc_resolve_link_sub,
3713 p1, BT_CHARACTER, dc, REQUIRED, INTENT_IN, 3740 p1, BT_CHARACTER, dc, REQUIRED, INTENT_IN,
4496 return false; 4523 return false;
4497 4524
4498 if (!do_ts29113_check (specific, *ap)) 4525 if (!do_ts29113_check (specific, *ap))
4499 return false; 4526 return false;
4500 4527
4501 if (specific->check.f3ml == gfc_check_minloc_maxloc) 4528 if (specific->check.f5ml == gfc_check_minloc_maxloc)
4502 /* This is special because we might have to reorder the argument list. */ 4529 /* This is special because we might have to reorder the argument list. */
4503 t = gfc_check_minloc_maxloc (*ap); 4530 t = gfc_check_minloc_maxloc (*ap);
4504 else if (specific->check.f3red == gfc_check_minval_maxval) 4531 else if (specific->check.f3red == gfc_check_minval_maxval)
4505 /* This is also special because we also might have to reorder the 4532 /* This is also special because we also might have to reorder the
4506 argument list. */ 4533 argument list. */
4534 /* There is no elemental intrinsic without arguments. */ 4561 /* There is no elemental intrinsic without arguments. */
4535 gcc_assert(arg != NULL); 4562 gcc_assert(arg != NULL);
4536 first_expr = arg->expr; 4563 first_expr = arg->expr;
4537 4564
4538 for ( ; arg && arg->expr; arg = arg->next, n++) 4565 for ( ; arg && arg->expr; arg = arg->next, n++)
4539 if (!gfc_check_conformance (first_expr, arg->expr, 4566 if (!gfc_check_conformance (first_expr, arg->expr,
4540 "arguments '%s' and '%s' for " 4567 "arguments '%s' and '%s' for "
4541 "intrinsic '%s'", 4568 "intrinsic '%s'",
4542 gfc_current_intrinsic_arg[0]->name, 4569 gfc_current_intrinsic_arg[0]->name,
4543 gfc_current_intrinsic_arg[n]->name, 4570 gfc_current_intrinsic_arg[n]->name,
4544 gfc_current_intrinsic)) 4571 gfc_current_intrinsic))
4545 return false; 4572 return false;
4546 } 4573 }
4547 4574
4548 if (!t) 4575 if (!t)
4595 4622
4596 case GFC_STD_F2008: 4623 case GFC_STD_F2008:
4597 symstd_msg = "new in Fortran 2008"; 4624 symstd_msg = "new in Fortran 2008";
4598 break; 4625 break;
4599 4626
4600 case GFC_STD_F2008_TS: 4627 case GFC_STD_F2018:
4601 symstd_msg = "new in TS 29113/TS 18508"; 4628 symstd_msg = "new in Fortran 2018";
4602 break; 4629 break;
4603 4630
4604 case GFC_STD_GNU: 4631 case GFC_STD_GNU:
4605 symstd_msg = "a GNU Fortran extension"; 4632 symstd_msg = "a GNU Fortran extension";
4606 break; 4633 break;
5143 return; 5170 return;
5144 5171
5145 /* Try to find an intrinsic of the same name. */ 5172 /* Try to find an intrinsic of the same name. */
5146 if (func) 5173 if (func)
5147 isym = gfc_find_function (sym->name); 5174 isym = gfc_find_function (sym->name);
5148 else 5175 else
5149 isym = gfc_find_subroutine (sym->name); 5176 isym = gfc_find_subroutine (sym->name);
5150 5177
5151 /* If no intrinsic was found with this name or it's not included in the 5178 /* If no intrinsic was found with this name or it's not included in the
5152 selected standard, everything's fine. */ 5179 selected standard, everything's fine. */
5153 if (!isym || !gfc_check_intrinsic_standard (isym, NULL, true, 5180 if (!isym || !gfc_check_intrinsic_standard (isym, NULL, true,
5154 sym->declared_at)) 5181 sym->declared_at))
5155 return; 5182 return;
5156 5183
5157 /* Emit the warning. */ 5184 /* Emit the warning. */
5158 if (in_module || sym->ns->proc_name) 5185 if (in_module || sym->ns->proc_name)