diff options
Diffstat (limited to 'gcc/fortran/gfortran.h')
-rw-r--r-- | gcc/fortran/gfortran.h | 93 |
1 files changed, 74 insertions, 19 deletions
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 38ef1a6d319..cd0dfd12069 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -303,11 +303,12 @@ extern const mstring ifsrc_types[]; /* Enumeration of all the generic intrinsic functions. Used by the backend for identification of a function. */ -enum gfc_generic_isym_id +enum gfc_isym_id { /* GFC_ISYM_NONE is used for intrinsics which will never be seen by the backend (eg. KIND). */ GFC_ISYM_NONE = 0, + GFC_ISYM_ABORT, GFC_ISYM_ABS, GFC_ISYM_ACCESS, GFC_ISYM_ACHAR, @@ -317,23 +318,19 @@ enum gfc_generic_isym_id GFC_ISYM_ADJUSTR, GFC_ISYM_AIMAG, GFC_ISYM_AINT, + GFC_ISYM_ALARM, GFC_ISYM_ALL, GFC_ISYM_ALLOCATED, - GFC_ISYM_ANINT, GFC_ISYM_AND, + GFC_ISYM_ANINT, GFC_ISYM_ANY, GFC_ISYM_ASIN, GFC_ISYM_ASINH, GFC_ISYM_ASSOCIATED, GFC_ISYM_ATAN, - GFC_ISYM_ATANH, GFC_ISYM_ATAN2, - GFC_ISYM_J0, - GFC_ISYM_J1, - GFC_ISYM_JN, - GFC_ISYM_Y0, - GFC_ISYM_Y1, - GFC_ISYM_YN, + GFC_ISYM_ATANH, + GFC_ISYM_BIT_SIZE, GFC_ISYM_BTEST, GFC_ISYM_CEILING, GFC_ISYM_CHAR, @@ -343,36 +340,55 @@ enum gfc_generic_isym_id GFC_ISYM_COMMAND_ARGUMENT_COUNT, GFC_ISYM_COMPLEX, GFC_ISYM_CONJG, + GFC_ISYM_CONVERSION, GFC_ISYM_COS, GFC_ISYM_COSH, GFC_ISYM_COUNT, + GFC_ISYM_CPU_TIME, GFC_ISYM_CSHIFT, GFC_ISYM_CTIME, + GFC_ISYM_DATE_AND_TIME, GFC_ISYM_DBLE, + GFC_ISYM_DIGITS, GFC_ISYM_DIM, GFC_ISYM_DOT_PRODUCT, GFC_ISYM_DPROD, + GFC_ISYM_DTIME, GFC_ISYM_EOSHIFT, + GFC_ISYM_EPSILON, GFC_ISYM_ERF, GFC_ISYM_ERFC, GFC_ISYM_ETIME, + GFC_ISYM_EXIT, GFC_ISYM_EXP, GFC_ISYM_EXPONENT, GFC_ISYM_FDATE, GFC_ISYM_FGET, GFC_ISYM_FGETC, GFC_ISYM_FLOOR, + GFC_ISYM_FLUSH, GFC_ISYM_FNUM, GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FRACTION, + GFC_ISYM_FREE, + GFC_ISYM_FSEEK, GFC_ISYM_FSTAT, GFC_ISYM_FTELL, + GFC_ISYM_GERROR, + GFC_ISYM_GETARG, + GFC_ISYM_GET_COMMAND, + GFC_ISYM_GET_COMMAND_ARGUMENT, GFC_ISYM_GETCWD, + GFC_ISYM_GETENV, + GFC_ISYM_GET_ENVIRONMENT_VARIABLE, GFC_ISYM_GETGID, + GFC_ISYM_GETLOG, GFC_ISYM_GETPID, GFC_ISYM_GETUID, + GFC_ISYM_GMTIME, GFC_ISYM_HOSTNM, + GFC_ISYM_HUGE, GFC_ISYM_IACHAR, GFC_ISYM_IAND, GFC_ISYM_IARGC, @@ -380,6 +396,7 @@ enum gfc_generic_isym_id GFC_ISYM_IBITS, GFC_ISYM_IBSET, GFC_ISYM_ICHAR, + GFC_ISYM_IDATE, GFC_ISYM_IEOR, GFC_ISYM_IERRNO, GFC_ISYM_INDEX, @@ -391,13 +408,18 @@ enum gfc_generic_isym_id GFC_ISYM_ISATTY, GFC_ISYM_ISHFT, GFC_ISYM_ISHFTC, + GFC_ISYM_ITIME, + GFC_ISYM_J0, + GFC_ISYM_J1, + GFC_ISYM_JN, GFC_ISYM_KILL, + GFC_ISYM_KIND, GFC_ISYM_LBOUND, GFC_ISYM_LEN, GFC_ISYM_LEN_TRIM, - GFC_ISYM_LINK, GFC_ISYM_LGE, GFC_ISYM_LGT, + GFC_ISYM_LINK, GFC_ISYM_LLE, GFC_ISYM_LLT, GFC_ISYM_LOC, @@ -407,57 +429,76 @@ enum gfc_generic_isym_id GFC_ISYM_LONG, GFC_ISYM_LSHIFT, GFC_ISYM_LSTAT, + GFC_ISYM_LTIME, GFC_ISYM_MALLOC, GFC_ISYM_MATMUL, GFC_ISYM_MAX, + GFC_ISYM_MAXEXPONENT, GFC_ISYM_MAXLOC, GFC_ISYM_MAXVAL, GFC_ISYM_MCLOCK, GFC_ISYM_MCLOCK8, GFC_ISYM_MERGE, GFC_ISYM_MIN, + GFC_ISYM_MINEXPONENT, GFC_ISYM_MINLOC, GFC_ISYM_MINVAL, GFC_ISYM_MOD, GFC_ISYM_MODULO, + GFC_ISYM_MOVE_ALLOC, + GFC_ISYM_MVBITS, GFC_ISYM_NEAREST, + GFC_ISYM_NEW_LINE, GFC_ISYM_NINT, GFC_ISYM_NOT, + GFC_ISYM_NULL, GFC_ISYM_OR, GFC_ISYM_PACK, + GFC_ISYM_PERROR, + GFC_ISYM_PRECISION, GFC_ISYM_PRESENT, GFC_ISYM_PRODUCT, + GFC_ISYM_RADIX, GFC_ISYM_RAND, + GFC_ISYM_RANDOM_NUMBER, + GFC_ISYM_RANDOM_SEED, + GFC_ISYM_RANGE, GFC_ISYM_REAL, GFC_ISYM_RENAME, GFC_ISYM_REPEAT, GFC_ISYM_RESHAPE, - GFC_ISYM_RSHIFT, GFC_ISYM_RRSPACING, + GFC_ISYM_RSHIFT, GFC_ISYM_SCALE, GFC_ISYM_SCAN, - GFC_ISYM_SECOND, GFC_ISYM_SECNDS, + GFC_ISYM_SECOND, GFC_ISYM_SET_EXPONENT, GFC_ISYM_SHAPE, - GFC_ISYM_SI_KIND, GFC_ISYM_SIGN, GFC_ISYM_SIGNAL, + GFC_ISYM_SI_KIND, GFC_ISYM_SIN, GFC_ISYM_SINH, GFC_ISYM_SIZE, + GFC_ISYM_SLEEP, + GFC_ISYM_SIZEOF, GFC_ISYM_SPACING, GFC_ISYM_SPREAD, GFC_ISYM_SQRT, + GFC_ISYM_SRAND, GFC_ISYM_SR_KIND, GFC_ISYM_STAT, GFC_ISYM_SUM, + GFC_ISYM_SYMLINK, GFC_ISYM_SYMLNK, GFC_ISYM_SYSTEM, + GFC_ISYM_SYSTEM_CLOCK, GFC_ISYM_TAN, GFC_ISYM_TANH, GFC_ISYM_TIME, GFC_ISYM_TIME8, + GFC_ISYM_TINY, GFC_ISYM_TRANSFER, GFC_ISYM_TRANSPOSE, GFC_ISYM_TRIM, @@ -468,9 +509,11 @@ enum gfc_generic_isym_id GFC_ISYM_UNPACK, GFC_ISYM_VERIFY, GFC_ISYM_XOR, - GFC_ISYM_CONVERSION + GFC_ISYM_Y0, + GFC_ISYM_Y1, + GFC_ISYM_YN }; -typedef enum gfc_generic_isym_id gfc_generic_isym_id; +typedef enum gfc_isym_id gfc_isym_id; /* Runtime errors. The EOR and EOF errors are required to be negative. These codes must be kept synchronized with their equivalents in @@ -1251,7 +1294,7 @@ typedef struct gfc_intrinsic_sym gfc_check_f check; gfc_resolve_f resolve; struct gfc_intrinsic_sym *specific_head, *next; - gfc_generic_isym_id generic_id; + gfc_isym_id id; } gfc_intrinsic_sym; @@ -1290,17 +1333,28 @@ typedef struct gfc_expr locus where; - /* True if it is converted from Hollerith constant. */ - unsigned int from_H : 1; /* True if the expression is a call to a function that returns an array, and if we have decided not to allocate temporary data for that array. */ unsigned int inline_noncopying_intrinsic : 1; - /* Used to quickly find a given constructor by it's offset. */ + + /* Used to quickly find a given constructor by its offset. */ splay_tree con_by_offset; + /* If an expression comes from a Hollerith constant or compile-time + evaluation of a transfer statement, it may have a prescribed target- + memory representation, and these cannot always be backformed from + the value. */ + struct + { + int length; + char *string; + } + representation; + union { int logical; + mpz_t integer; mpfr_t real; @@ -2008,6 +2062,7 @@ int gfc_specific_intrinsic (const char *); int gfc_intrinsic_name (const char *, int); int gfc_intrinsic_actual_ok (const char *, const bool); gfc_intrinsic_sym *gfc_find_function (const char *); +gfc_intrinsic_sym *gfc_find_subroutine (const char *); match gfc_intrinsic_func_interface (gfc_expr *, int); match gfc_intrinsic_sub_interface (gfc_code *, int); |