Mercurial > hg > CbC > CbC_gcc
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) |