aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/gfortran.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/gfortran.h')
-rw-r--r--gcc/fortran/gfortran.h93
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);