diff options
Diffstat (limited to 'gcc/fortran/intrinsic.c')
-rw-r--r-- | gcc/fortran/intrinsic.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 1d7503d..ca28eac 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -1255,6 +1255,14 @@ add_functions (void) gfc_check_abs, gfc_simplify_abs, gfc_resolve_abs, a, BT_REAL, dr, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("babs", GFC_STD_GNU); + make_alias ("iiabs", GFC_STD_GNU); + make_alias ("jiabs", GFC_STD_GNU); + make_alias ("kiabs", GFC_STD_GNU); + } + add_sym_1 ("iabs", GFC_ISYM_ABS, CLASS_ELEMENTAL, ACTUAL_YES, BT_INTEGER, di, GFC_STD_F77, NULL, gfc_simplify_abs, gfc_resolve_abs, a, BT_INTEGER, di, REQUIRED); @@ -1557,6 +1565,14 @@ add_functions (void) gfc_check_bitfcn, gfc_simplify_btest, gfc_resolve_btest, i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bbtest", GFC_STD_GNU); + make_alias ("bitest", GFC_STD_GNU); + make_alias ("bjtest", GFC_STD_GNU); + make_alias ("bktest", GFC_STD_GNU); + } + make_generic ("btest", GFC_ISYM_BTEST, GFC_STD_F95); add_sym_2 ("ceiling", GFC_ISYM_CEILING, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, @@ -1950,6 +1966,14 @@ add_functions (void) gfc_check_iand, gfc_simplify_iand, gfc_resolve_iand, i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("biand", GFC_STD_GNU); + make_alias ("iiand", GFC_STD_GNU); + make_alias ("jiand", GFC_STD_GNU); + make_alias ("kiand", GFC_STD_GNU); + } + make_generic ("iand", GFC_ISYM_IAND, GFC_STD_F95); add_sym_2 ("and", GFC_ISYM_AND, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL, @@ -1981,6 +2005,14 @@ add_functions (void) gfc_check_bitfcn, gfc_simplify_ibclr, gfc_resolve_ibclr, i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bbclr", GFC_STD_GNU); + make_alias ("iibclr", GFC_STD_GNU); + make_alias ("jibclr", GFC_STD_GNU); + make_alias ("kibclr", GFC_STD_GNU); + } + make_generic ("ibclr", GFC_ISYM_IBCLR, GFC_STD_F95); add_sym_3 ("ibits", GFC_ISYM_IBITS, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, @@ -1988,12 +2020,28 @@ add_functions (void) i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED, ln, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bbits", GFC_STD_GNU); + make_alias ("iibits", GFC_STD_GNU); + make_alias ("jibits", GFC_STD_GNU); + make_alias ("kibits", GFC_STD_GNU); + } + make_generic ("ibits", GFC_ISYM_IBITS, GFC_STD_F95); add_sym_2 ("ibset", GFC_ISYM_IBSET, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, gfc_check_bitfcn, gfc_simplify_ibset, gfc_resolve_ibset, i, BT_INTEGER, di, REQUIRED, pos, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bbset", GFC_STD_GNU); + make_alias ("iibset", GFC_STD_GNU); + make_alias ("jibset", GFC_STD_GNU); + make_alias ("kibset", GFC_STD_GNU); + } + make_generic ("ibset", GFC_ISYM_IBSET, GFC_STD_F95); add_sym_2 ("ichar", GFC_ISYM_ICHAR, CLASS_ELEMENTAL, ACTUAL_NO, @@ -2007,6 +2055,14 @@ add_functions (void) gfc_check_ieor, gfc_simplify_ieor, gfc_resolve_ieor, i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bieor", GFC_STD_GNU); + make_alias ("iieor", GFC_STD_GNU); + make_alias ("jieor", GFC_STD_GNU); + make_alias ("kieor", GFC_STD_GNU); + } + make_generic ("ieor", GFC_ISYM_IEOR, GFC_STD_F95); add_sym_2 ("xor", GFC_ISYM_XOR, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL, @@ -2072,6 +2128,14 @@ add_functions (void) gfc_check_ior, gfc_simplify_ior, gfc_resolve_ior, i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bior", GFC_STD_GNU); + make_alias ("iior", GFC_STD_GNU); + make_alias ("jior", GFC_STD_GNU); + make_alias ("kior", GFC_STD_GNU); + } + make_generic ("ior", GFC_ISYM_IOR, GFC_STD_F95); add_sym_2 ("or", GFC_ISYM_OR, CLASS_IMPURE, ACTUAL_NO, BT_LOGICAL, @@ -2139,6 +2203,14 @@ add_functions (void) gfc_check_ishft, gfc_simplify_ishft, gfc_resolve_ishft, i, BT_INTEGER, di, REQUIRED, sh, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bshft", GFC_STD_GNU); + make_alias ("iishft", GFC_STD_GNU); + make_alias ("jishft", GFC_STD_GNU); + make_alias ("kishft", GFC_STD_GNU); + } + make_generic ("ishft", GFC_ISYM_ISHFT, GFC_STD_F95); add_sym_3 ("ishftc", GFC_ISYM_ISHFTC, CLASS_ELEMENTAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95, @@ -2146,6 +2218,14 @@ add_functions (void) i, BT_INTEGER, di, REQUIRED, sh, BT_INTEGER, di, REQUIRED, sz, BT_INTEGER, di, OPTIONAL); + if (flag_dec_intrinsic_ints) + { + make_alias ("bshftc", GFC_STD_GNU); + make_alias ("iishftc", GFC_STD_GNU); + make_alias ("jishftc", GFC_STD_GNU); + make_alias ("kishftc", GFC_STD_GNU); + } + make_generic ("ishftc", GFC_ISYM_ISHFTC, GFC_STD_F95); add_sym_2 ("kill", GFC_ISYM_KILL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, @@ -2456,6 +2536,14 @@ add_functions (void) gfc_check_a_p, gfc_simplify_mod, gfc_resolve_mod, a, BT_INTEGER, di, REQUIRED, p, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bmod", GFC_STD_GNU); + make_alias ("imod", GFC_STD_GNU); + make_alias ("jmod", GFC_STD_GNU); + make_alias ("kmod", GFC_STD_GNU); + } + add_sym_2 ("amod", GFC_ISYM_MOD, CLASS_ELEMENTAL, ACTUAL_YES, BT_REAL, dr, GFC_STD_F77, NULL, gfc_simplify_mod, gfc_resolve_mod, a, BT_REAL, dr, REQUIRED, p, BT_REAL, dr, REQUIRED); @@ -2498,6 +2586,14 @@ add_functions (void) gfc_check_i, gfc_simplify_not, gfc_resolve_not, i, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("bnot", GFC_STD_GNU); + make_alias ("inot", GFC_STD_GNU); + make_alias ("jnot", GFC_STD_GNU); + make_alias ("knot", GFC_STD_GNU); + } + make_generic ("not", GFC_ISYM_NOT, GFC_STD_F95); add_sym_2 ("norm2", GFC_ISYM_NORM2, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, @@ -2608,6 +2704,13 @@ add_functions (void) gfc_check_float, gfc_simplify_float, NULL, a, BT_INTEGER, di, REQUIRED); + if (flag_dec_intrinsic_ints) + { + make_alias ("floati", GFC_STD_GNU); + make_alias ("floatj", GFC_STD_GNU); + make_alias ("floatk", GFC_STD_GNU); + } + add_sym_1 ("dfloat", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dd, GFC_STD_GNU, gfc_check_float, gfc_simplify_dble, gfc_resolve_dble, a, BT_REAL, dr, REQUIRED); @@ -3306,6 +3409,14 @@ add_subroutines (void) t, BT_INTEGER, di, REQUIRED, INTENT_INOUT, tp, BT_INTEGER, di, REQUIRED, INTENT_IN); + if (flag_dec_intrinsic_ints) + { + make_alias ("bmvbits", GFC_STD_GNU); + make_alias ("imvbits", GFC_STD_GNU); + make_alias ("jmvbits", GFC_STD_GNU); + make_alias ("kmvbits", GFC_STD_GNU); + } + add_sym_1s ("random_number", GFC_ISYM_RANDOM_NUMBER, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_F95, gfc_check_random_number, NULL, gfc_resolve_random_number, |