Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-core.h @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/tree-core.h Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/tree-core.h Thu Oct 25 07:37:49 2018 +0900 @@ -1,5 +1,5 @@ /* Core data structures for the 'tree' type. - Copyright (C) 1989-2017 Free Software Foundation, Inc. + Copyright (C) 1989-2018 Free Software Foundation, Inc. This file is part of GCC. @@ -165,16 +165,6 @@ #define DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) ENUM, enum built_in_function { #include "builtins.def" - - BEGIN_CHKP_BUILTINS, - -#define DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) -#define DEF_BUILTIN_CHKP(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) \ - ENUM##_CHKP = ENUM + BEGIN_CHKP_BUILTINS + 1, -#include "builtins.def" - - END_CHKP_BUILTINS = BEGIN_CHKP_BUILTINS * 2 + 1, - /* Complex division routines in libgcc. These are done via builtins because emit_library_call_value can't handle complex values. */ BUILT_IN_COMPLEX_MUL_MIN, @@ -210,10 +200,6 @@ CFN_##ENUM = int (ENUM), #include "builtins.def" -#define DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) -#define DEF_BUILTIN_CHKP(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) \ - CFN_##ENUM##_CHKP = int (ENUM##_CHKP), -#include "builtins.def" #define DEF_INTERNAL_FN(CODE, FLAGS, FNSPEC) \ CFN_##CODE = int (END_BUILTINS) + int (IFN_##CODE), @@ -445,10 +431,6 @@ loop or not. */ OMP_CLAUSE__SIMT_, - /* Internally used only clause, holding _Cilk_for # of iterations - on OMP_PARALLEL. */ - OMP_CLAUSE__CILK_FOR_COUNT_, - /* OpenACC clause: independent. */ OMP_CLAUSE_INDEPENDENT, @@ -472,7 +454,13 @@ /* OpenMP internal-only clause to specify grid dimensions of a gridified kernel. */ - OMP_CLAUSE__GRIDDIM_ + OMP_CLAUSE__GRIDDIM_, + + /* OpenACC clause: if_present. */ + OMP_CLAUSE_IF_PRESENT, + + /* OpenACC clause: finalize. */ + OMP_CLAUSE_FINALIZE }; #undef DEFTREESTRUCT @@ -489,7 +477,6 @@ OMP_CLAUSE_SCHEDULE_GUIDED, OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_SCHEDULE_RUNTIME, - OMP_CLAUSE_SCHEDULE_CILKFOR, OMP_CLAUSE_SCHEDULE_MASK = (1 << 3) - 1, OMP_CLAUSE_SCHEDULE_MONOTONIC = (1 << 3), OMP_CLAUSE_SCHEDULE_NONMONOTONIC = (1 << 4), @@ -633,8 +620,6 @@ TI_CONST_FEXCEPT_T_PTR_TYPE, TI_POINTER_SIZED_TYPE, - TI_POINTER_BOUNDS_TYPE, - TI_DFLOAT32_TYPE, TI_DFLOAT64_TYPE, TI_DFLOAT128_TYPE, @@ -851,8 +836,10 @@ enum annot_expr_kind { annot_expr_ivdep_kind, + annot_expr_unroll_kind, annot_expr_no_vector_kind, annot_expr_vector_kind, + annot_expr_parallel_kind, annot_expr_kind_last }; @@ -975,8 +962,17 @@ /* VEC length. This field is only used with TREE_VEC. */ int length; - /* Number of elements. This field is only used with VECTOR_CST. */ - unsigned int nelts; + /* This field is only used with VECTOR_CST. */ + struct { + /* The value of VECTOR_CST_LOG2_NPATTERNS. */ + unsigned int log2_npatterns : 8; + + /* The value of VECTOR_CST_NELTS_PER_PATTERN. */ + unsigned int nelts_per_pattern : 8; + + /* For future expansion. */ + unsigned int unused : 16; + } vector_cst; /* SSA version number. This field is only used with SSA_NAME. */ unsigned int version; @@ -1110,6 +1106,9 @@ SSA_NAME_IS_VIRTUAL_OPERAND in SSA_NAME + EXPR_LOCATION_WRAPPER_P in + NON_LVALUE_EXPR, VIEW_CONVERT_EXPR + private_flag: TREE_PRIVATE in @@ -1208,10 +1207,6 @@ SSA_NAME_OCCURS_IN_ABNORMAL_PHI in SSA_NAME - EXPR_CILK_SPAWN in - CALL_EXPR - AGGR_INIT_EXPR - used_flag: TREE_USED in @@ -1243,6 +1238,9 @@ IDENTIFIER_TRANSPARENT_ALIAS in IDENTIFIER_NODE + SSA_NAME_POINTS_TO_READONLY_MEMORY in + SSA_NAME + visited: TREE_VISITED in @@ -1332,7 +1330,12 @@ struct GTY(()) tree_vector { struct tree_typed typed; - tree GTY ((length ("VECTOR_CST_NELTS ((tree) &%h)"))) elts[1]; + tree GTY ((length ("vector_cst_encoded_nelts ((tree) &%h)"))) elts[1]; +}; + +struct GTY(()) tree_poly_int_cst { + struct tree_typed typed; + tree coeffs[NUM_POLY_INT_COEFFS]; }; struct GTY(()) tree_identifier { @@ -1478,8 +1481,7 @@ struct tree_base base; tree chain; - unsigned abstract_flag : 1; - unsigned block_num : 31; + unsigned block_num; location_t locus; location_t end_locus; @@ -1531,14 +1533,14 @@ unsigned align : 6; unsigned warn_if_not_align : 6; unsigned typeless_storage : 1; - unsigned spare : 18; + unsigned empty_flag : 1; + unsigned spare : 17; alias_set_type alias_set; tree pointer_to; tree reference_to; union tree_type_symtab { int GTY ((tag ("TYPE_SYMTAB_IS_ADDRESS"))) address; - const char * GTY ((tag ("TYPE_SYMTAB_IS_POINTER"))) pointer; struct die_struct * GTY ((tag ("TYPE_SYMTAB_IS_DIE"))) die; } GTY ((desc ("debug_hooks->tree_type_symtab_field"))) symtab; tree canonical; @@ -1610,7 +1612,8 @@ unsigned lang_flag_7 : 1; unsigned lang_flag_8 : 1; - /* In VAR_DECL and PARM_DECL, this is DECL_REGISTER. */ + /* In VAR_DECL and PARM_DECL, this is DECL_REGISTER + IN TRANSLATION_UNIT_DECL, this is TRANSLATION_UNIT_WARN_EMPTY_P. */ unsigned decl_flag_0 : 1; /* In FIELD_DECL, this is DECL_BIT_FIELD In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL. @@ -1620,7 +1623,7 @@ In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_HAS_VALUE_EXPR_P. */ unsigned decl_flag_2 : 1; - /* 1 bit unused. */ + /* In FIELD_DECL, this is DECL_PADDING_P. */ unsigned decl_flag_3 : 1; /* Logically, these two would go in a theoretical base shared by var and parm decl. */ @@ -1785,8 +1788,8 @@ unsigned pure_flag : 1; unsigned looping_const_or_pure_flag : 1; unsigned has_debug_args_flag : 1; - unsigned tm_clone_flag : 1; unsigned versioned_function : 1; + unsigned lambda_function: 1; /* No bits left. */ }; @@ -1860,6 +1863,7 @@ struct tree_typed GTY ((tag ("TS_TYPED"))) typed; struct tree_common GTY ((tag ("TS_COMMON"))) common; struct tree_int_cst GTY ((tag ("TS_INT_CST"))) int_cst; + struct tree_poly_int_cst GTY ((tag ("TS_POLY_INT_CST"))) poly_int_cst; struct tree_real_cst GTY ((tag ("TS_REAL_CST"))) real_cst; struct tree_fixed_cst GTY ((tag ("TS_FIXED_CST"))) fixed_cst; struct tree_vector GTY ((tag ("TS_VECTOR"))) vector; @@ -1926,24 +1930,38 @@ and from a function return type (which is not itself a function pointer type) to the function type. */ bool function_type_required; + /* Specifies if attribute affects type's identity. */ + bool affects_type_identity; /* Function to handle this attribute. NODE points to the node to which the attribute is to be applied. If a DECL, it should be modified in - place; if a TYPE, a copy should be created. NAME is the name of the - attribute (possibly with leading or trailing __). ARGS is the TREE_LIST - of the arguments (which may be NULL). FLAGS gives further information - about the context of the attribute. Afterwards, the attributes will - be added to the DECL_ATTRIBUTES or TYPE_ATTRIBUTES, as appropriate, - unless *NO_ADD_ATTRS is set to true (which should be done on error, - as well as in any other cases when the attributes should not be added - to the DECL or TYPE). Depending on FLAGS, any attributes to be + place; if a TYPE, a copy should be created. NAME is the canonicalized + name of the attribute i.e. without any leading or trailing underscores. + ARGS is the TREE_LIST of the arguments (which may be NULL). FLAGS gives + further information about the context of the attribute. Afterwards, the + attributes will be added to the DECL_ATTRIBUTES or TYPE_ATTRIBUTES, as + appropriate, unless *NO_ADD_ATTRS is set to true (which should be done on + error, as well as in any other cases when the attributes should not be + added to the DECL or TYPE). Depending on FLAGS, any attributes to be applied to another type or DECL later may be returned; otherwise the return value should be NULL_TREE. This pointer may be NULL if no special handling is required beyond the checks implied by the rest of this structure. */ tree (*handler) (tree *node, tree name, tree args, int flags, bool *no_add_attrs); - /* Specifies if attribute affects type's identity. */ - bool affects_type_identity; + + /* Specifies the name of an attribute that's mutually exclusive with + this one, and whether the relationship applies to the function, + variable, or type form of the attribute. */ + struct exclusions { + const char *name; + bool function; + bool variable; + bool type; + }; + + /* An array of attribute exclusions describing names of other attributes + that this attribute is mutually exclusive with. */ + const exclusions *exclude; }; /* These functions allow a front-end to perform a manual layout of a @@ -2097,8 +2115,8 @@ extern GTY(()) tree sizetype_tab[(int) stk_type_kind_last]; /* Arrays for keeping track of tree node statistics. */ -extern int tree_node_counts[]; -extern int tree_node_sizes[]; +extern uint64_t tree_node_counts[]; +extern uint64_t tree_node_sizes[]; /* True if we are in gimple form and the actions of the folders need to be restricted. False if we are not in gimple form and folding is not