diff options
Diffstat (limited to 'gcc/fortran/gfortran.h')
-rw-r--r-- | gcc/fortran/gfortran.h | 161 |
1 files changed, 64 insertions, 97 deletions
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 5a0c3695e7a..9c0084be77c 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -102,70 +102,61 @@ mstring; /* Used when matching and resolving data I/O transfer statements. */ -typedef enum -{ M_READ, M_WRITE, M_PRINT, M_INQUIRE } -io_kind; +enum io_kind +{ M_READ, M_WRITE, M_PRINT, M_INQUIRE }; /* These are flags for identifying whether we are reading a character literal between quotes or normal source code. */ -typedef enum -{ NONSTRING = 0, INSTRING_WARN, INSTRING_NOWARN } -gfc_instring; +enum gfc_instring +{ NONSTRING = 0, INSTRING_WARN, INSTRING_NOWARN }; /* This is returned by gfc_notification_std to know if, given the flags that were given (-std=, -pedantic) we should issue an error, a warning or nothing. */ -typedef enum -{ SILENT, WARNING, ERROR } -notification; +enum notification +{ SILENT, WARNING, ERROR }; /* Matchers return one of these three values. The difference between MATCH_NO and MATCH_ERROR is that MATCH_ERROR means that a match was successful, but that something non-syntactic is wrong and an error has already been issued. */ -typedef enum -{ MATCH_NO = 1, MATCH_YES, MATCH_ERROR } -match; +enum match +{ MATCH_NO = 1, MATCH_YES, MATCH_ERROR }; /* Used for different Fortran source forms in places like scanner.c. */ -typedef enum -{ FORM_FREE, FORM_FIXED, FORM_UNKNOWN } -gfc_source_form; +enum gfc_source_form +{ FORM_FREE, FORM_FIXED, FORM_UNKNOWN }; /* Expression node types. */ -typedef enum +enum expr_t { EXPR_OP = 1, EXPR_FUNCTION, EXPR_CONSTANT, EXPR_VARIABLE, EXPR_SUBSTRING, EXPR_STRUCTURE, EXPR_ARRAY, EXPR_NULL, EXPR_COMPCALL, EXPR_PPC -} -expr_t; +}; /* Array types. */ -typedef enum +enum array_type { AS_EXPLICIT = 1, AS_ASSUMED_SHAPE, AS_DEFERRED, AS_ASSUMED_SIZE, AS_IMPLIED_SHAPE, AS_ASSUMED_RANK, AS_UNKNOWN -} -array_type; +}; -typedef enum -{ AR_FULL = 1, AR_ELEMENT, AR_SECTION, AR_UNKNOWN } -ar_type; +enum ar_type +{ AR_FULL = 1, AR_ELEMENT, AR_SECTION, AR_UNKNOWN }; /* Statement label types. ST_LABEL_DO_TARGET is used for obsolescent warnings related to shared DO terminations and DO targets which are neither END DO nor CONTINUE; otherwise it is identical to ST_LABEL_TARGET. */ -typedef enum +enum gfc_sl_type { ST_LABEL_UNKNOWN = 1, ST_LABEL_TARGET, ST_LABEL_DO_TARGET, ST_LABEL_BAD_TARGET, ST_LABEL_FORMAT -} -gfc_sl_type; +}; /* Intrinsic operators. */ -typedef enum +enum gfc_intrinsic_op { GFC_INTRINSIC_BEGIN = 0, INTRINSIC_NONE = -1, INTRINSIC_UPLUS = GFC_INTRINSIC_BEGIN, INTRINSIC_UMINUS, INTRINSIC_PLUS, INTRINSIC_MINUS, INTRINSIC_TIMES, @@ -179,22 +170,20 @@ typedef enum INTRINSIC_LT_OS, INTRINSIC_LE_OS, INTRINSIC_NOT, INTRINSIC_USER, INTRINSIC_ASSIGN, INTRINSIC_PARENTHESES, GFC_INTRINSIC_END /* Sentinel */ -} -gfc_intrinsic_op; +}; /* This macro is the number of intrinsic operators that exist. Assumptions are made about the numbering of the interface_op enums. */ #define GFC_INTRINSIC_OPS GFC_INTRINSIC_END /* Arithmetic results. */ -typedef enum +enum arith { ARITH_OK = 1, ARITH_OVERFLOW, ARITH_UNDERFLOW, ARITH_NAN, ARITH_DIV0, ARITH_INCOMMENSURATE, ARITH_ASYMMETRIC, ARITH_PROHIBIT -} -arith; +}; /* Statements. */ -typedef enum +enum gfc_statement { ST_ARITHMETIC_IF, ST_ALLOCATE, ST_ATTR_DECL, ST_ASSOCIATE, ST_BACKSPACE, ST_BLOCK, ST_BLOCK_DATA, @@ -252,62 +241,54 @@ typedef enum ST_OMP_END_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD, ST_PROCEDURE, ST_GENERIC, ST_CRITICAL, ST_END_CRITICAL, ST_GET_FCN_CHARACTERISTICS, ST_LOCK, ST_UNLOCK, ST_NONE -} -gfc_statement; +}; /* Types of interfaces that we can have. Assignment interfaces are considered to be intrinsic operators. */ -typedef enum +enum interface_type { INTERFACE_NAMELESS = 1, INTERFACE_GENERIC, INTERFACE_INTRINSIC_OP, INTERFACE_USER_OP, INTERFACE_ABSTRACT -} -interface_type; +}; /* Symbol flavors: these are all mutually exclusive. 10 elements = 4 bits. */ -typedef enum sym_flavor +enum sym_flavor { FL_UNKNOWN = 0, FL_PROGRAM, FL_BLOCK_DATA, FL_MODULE, FL_VARIABLE, FL_PARAMETER, FL_LABEL, FL_PROCEDURE, FL_DERIVED, FL_NAMELIST, FL_VOID -} -sym_flavor; +}; /* Procedure types. 7 elements = 3 bits. */ -typedef enum procedure_type +enum procedure_type { PROC_UNKNOWN, PROC_MODULE, PROC_INTERNAL, PROC_DUMMY, PROC_INTRINSIC, PROC_ST_FUNCTION, PROC_EXTERNAL -} -procedure_type; +}; /* Intent types. */ -typedef enum sym_intent +enum sym_intent { INTENT_UNKNOWN = 0, INTENT_IN, INTENT_OUT, INTENT_INOUT -} -sym_intent; +}; /* Access types. */ -typedef enum gfc_access +enum gfc_access { ACCESS_UNKNOWN = 0, ACCESS_PUBLIC, ACCESS_PRIVATE -} -gfc_access; +}; /* Flags to keep track of where an interface came from. 3 elements = 2 bits. */ -typedef enum ifsrc +enum ifsrc { IFSRC_UNKNOWN = 0, /* Interface unknown, only return type may be known. */ IFSRC_DECL, /* FUNCTION or SUBROUTINE declaration. */ IFSRC_IFBODY /* INTERFACE statement or PROCEDURE statement with explicit interface. */ -} -ifsrc; +}; /* Whether a SAVE attribute was set explicitly or implicitly. */ -typedef enum save_state +enum save_state { SAVE_NONE = 0, SAVE_EXPLICIT, SAVE_IMPLICIT -} -save_state; +}; /* Strings for all symbol attributes. We use these for dumping the parse tree, in error messages, and also when reading and writing @@ -602,38 +583,33 @@ enum gfc_isym_id GFC_ISYM_YN, GFC_ISYM_YN2 }; -typedef enum gfc_isym_id gfc_isym_id; -typedef enum +enum init_local_logical { GFC_INIT_LOGICAL_OFF = 0, GFC_INIT_LOGICAL_FALSE, GFC_INIT_LOGICAL_TRUE -} -init_local_logical; +}; -typedef enum +enum init_local_character { GFC_INIT_CHARACTER_OFF = 0, GFC_INIT_CHARACTER_ON -} -init_local_character; +}; -typedef enum +enum init_local_integer { GFC_INIT_INTEGER_OFF = 0, GFC_INIT_INTEGER_ON -} -init_local_integer; +}; -typedef enum +enum gfc_reverse { GFC_ENABLE_REVERSE, GFC_FORWARD_SET, GFC_REVERSE_SET, GFC_INHIBIT_REVERSE -} -gfc_reverse; +}; /************************* Structures *****************************/ @@ -645,13 +621,12 @@ gfc_reverse; #define NAMED_FUNCTION(a,b,c,d) a, #define NAMED_SUBROUTINE(a,b,c,d) a, #define NAMED_DERIVED_TYPE(a,b,c,d) a, -typedef enum +enum iso_fortran_env_symbol { ISOFORTRANENV_INVALID = -1, #include "iso-fortran-env.def" ISOFORTRANENV_LAST, ISOFORTRANENV_NUMBER = ISOFORTRANENV_LAST -} -iso_fortran_env_symbol; +}; #undef NAMED_INTCST #undef NAMED_KINDARRAY #undef NAMED_FUNCTION @@ -667,14 +642,13 @@ iso_fortran_env_symbol; #define DERIVED_TYPE(a,b,c) a, #define NAMED_FUNCTION(a,b,c,d) a, #define NAMED_SUBROUTINE(a,b,c,d) a, -typedef enum +enum iso_c_binding_symbol { ISOCBINDING_INVALID = -1, #include "iso-c-binding.def" ISOCBINDING_LAST, ISOCBINDING_NUMBER = ISOCBINDING_LAST -} -iso_c_binding_symbol; +}; #undef NAMED_INTCST #undef NAMED_REALCST #undef NAMED_CMPXCST @@ -685,12 +659,11 @@ iso_c_binding_symbol; #undef NAMED_FUNCTION #undef NAMED_SUBROUTINE -typedef enum +enum intmod_id { INTMOD_NONE = 0, INTMOD_ISO_FORTRAN_ENV, INTMOD_ISO_C_BINDING, INTMOD_IEEE_FEATURES, INTMOD_IEEE_EXCEPTIONS, INTMOD_IEEE_ARITHMETIC -} -intmod_id; +}; typedef struct { @@ -1095,7 +1068,7 @@ gfc_expr_list; #define gfc_get_expr_list() XCNEW (gfc_expr_list) -typedef enum +enum gfc_omp_reduction_op { OMP_REDUCTION_NONE = -1, OMP_REDUCTION_PLUS = INTRINSIC_PLUS, @@ -1111,18 +1084,16 @@ typedef enum OMP_REDUCTION_IOR, OMP_REDUCTION_IEOR, OMP_REDUCTION_USER -} -gfc_omp_reduction_op; +}; -typedef enum +enum gfc_omp_depend_op { OMP_DEPEND_IN, OMP_DEPEND_OUT, OMP_DEPEND_INOUT -} -gfc_omp_depend_op; +}; -typedef enum +enum gfc_omp_map_op { OMP_MAP_ALLOC, OMP_MAP_TO, @@ -1135,8 +1106,7 @@ typedef enum OMP_MAP_FORCE_TOFROM, OMP_MAP_FORCE_PRESENT, OMP_MAP_FORCE_DEVICEPTR -} -gfc_omp_map_op; +}; /* For use in OpenMP clauses in case we need extra information (aligned clause alignment, linear clause step, etc.). */ @@ -1796,9 +1766,8 @@ gfc_array_ref; resolution. The array_ref component may be present and comes before the component component. */ -typedef enum - { REF_ARRAY, REF_COMPONENT, REF_SUBSTRING } -ref_type; +enum ref_type + { REF_ARRAY, REF_COMPONENT, REF_SUBSTRING }; typedef struct gfc_ref { @@ -2329,7 +2298,7 @@ gfc_association_list; /* Executable statements that fill gfc_code structures. */ -typedef enum +enum gfc_exec_op { EXEC_NOP = 1, EXEC_END_NESTED_BLOCK, EXEC_END_BLOCK, EXEC_ASSIGN, EXEC_LABEL_ASSIGN, EXEC_POINTER_ASSIGN, EXEC_CRITICAL, EXEC_ERROR_STOP, @@ -2366,10 +2335,9 @@ typedef enum EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD, EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD, EXEC_OMP_TARGET_UPDATE -} -gfc_exec_op; +}; -typedef enum +enum gfc_omp_atomic_op { GFC_OMP_ATOMIC_UPDATE = 0, GFC_OMP_ATOMIC_READ = 1, @@ -2378,8 +2346,7 @@ typedef enum GFC_OMP_ATOMIC_MASK = 3, GFC_OMP_ATOMIC_SEQ_CST = 4, GFC_OMP_ATOMIC_SWAP = 8 -} -gfc_omp_atomic_op; +}; typedef struct gfc_code { |