diff options
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 239 |
1 files changed, 161 insertions, 78 deletions
diff --git a/gcc/tree.h b/gcc/tree.h index 409dfbff6b4..dc5db617bc5 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -587,7 +587,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, exit of a function. Calls for which this is true are candidates for tail call optimizations. */ #define CALL_EXPR_TAILCALL(NODE) \ - (CALL_EXPR_CHECK(NODE)->base.addressable_flag) + (CALL_EXPR_CHECK (NODE)->base.addressable_flag) /* Used as a temporary field on a CASE_LABEL_EXPR to indicate that the CASE_LOW operand has been processed. */ @@ -595,9 +595,9 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, (CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag) #define PREDICT_EXPR_OUTCOME(NODE) \ - ((enum prediction) (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag)) + ((enum prediction) (PREDICT_EXPR_CHECK (NODE)->base.addressable_flag)) #define SET_PREDICT_EXPR_OUTCOME(NODE, OUTCOME) \ - (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag = (int) OUTCOME) + (PREDICT_EXPR_CHECK (NODE)->base.addressable_flag = (int) OUTCOME) #define PREDICT_EXPR_PREDICTOR(NODE) \ ((enum br_predictor)tree_to_shwi (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0))) @@ -669,7 +669,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, /* In a _TYPE, indicates whether TYPE_CACHED_VALUES contains a vector of cached values, or is something else. */ -#define TYPE_CACHED_VALUES_P(NODE) (TYPE_CHECK(NODE)->base.public_flag) +#define TYPE_CACHED_VALUES_P(NODE) (TYPE_CHECK (NODE)->base.public_flag) /* In a SAVE_EXPR, indicates that the original expression has already been substituted with a VAR_DECL that contains the value. */ @@ -679,7 +679,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, /* Set on a CALL_EXPR if this stdarg call should be passed the argument pack. */ #define CALL_EXPR_VA_ARG_PACK(NODE) \ - (CALL_EXPR_CHECK(NODE)->base.public_flag) + (CALL_EXPR_CHECK (NODE)->base.public_flag) /* In any expression, decl, or constant, nonzero means it has side effects or reevaluation of the whole expression could produce a different value. @@ -861,19 +861,19 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, /* These flags are available for each language front end to use internally. */ #define TREE_LANG_FLAG_0(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_0) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_0) #define TREE_LANG_FLAG_1(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_1) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_1) #define TREE_LANG_FLAG_2(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_2) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_2) #define TREE_LANG_FLAG_3(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_3) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_3) #define TREE_LANG_FLAG_4(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_4) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_4) #define TREE_LANG_FLAG_5(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_5) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_5) #define TREE_LANG_FLAG_6(NODE) \ - (TREE_NOT_CHECK2(NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_6) + (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_6) /* Define additional fields and accessors for nodes representing constants. */ @@ -1133,7 +1133,7 @@ extern void protected_set_expr_location (tree, location_t); #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1) #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2) #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3) -#define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3) +#define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH (NODE) - 3) /* CALL_EXPR_ARGP returns a pointer to the argument vector for NODE. We can't use &CALL_EXPR_ARG (NODE, 0) because that will complain if @@ -1169,12 +1169,13 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_TASKREG_BODY(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 0) #define OMP_TASKREG_CLAUSES(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 1) -#define OMP_FOR_BODY(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 0) -#define OMP_FOR_CLAUSES(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 1) -#define OMP_FOR_INIT(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 2) -#define OMP_FOR_COND(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 3) -#define OMP_FOR_INCR(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 4) -#define OMP_FOR_PRE_BODY(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 5) +#define OMP_LOOP_CHECK(NODE) TREE_RANGE_CHECK (NODE, OMP_FOR, OMP_DISTRIBUTE) +#define OMP_FOR_BODY(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 0) +#define OMP_FOR_CLAUSES(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 1) +#define OMP_FOR_INIT(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 2) +#define OMP_FOR_COND(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 3) +#define OMP_FOR_INCR(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 4) +#define OMP_FOR_PRE_BODY(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 5) #define OMP_SECTIONS_BODY(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 0) #define OMP_SECTIONS_CLAUSES(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 1) @@ -1186,16 +1187,37 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_MASTER_BODY(NODE) TREE_OPERAND (OMP_MASTER_CHECK (NODE), 0) +#define OMP_TASKGROUP_BODY(NODE) TREE_OPERAND (OMP_TASKGROUP_CHECK (NODE), 0) + #define OMP_ORDERED_BODY(NODE) TREE_OPERAND (OMP_ORDERED_CHECK (NODE), 0) #define OMP_CRITICAL_BODY(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 0) #define OMP_CRITICAL_NAME(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 1) +#define OMP_TEAMS_BODY(NODE) TREE_OPERAND (OMP_TEAMS_CHECK (NODE), 0) +#define OMP_TEAMS_CLAUSES(NODE) TREE_OPERAND (OMP_TEAMS_CHECK (NODE), 1) + +#define OMP_TARGET_DATA_BODY(NODE) \ + TREE_OPERAND (OMP_TARGET_DATA_CHECK (NODE), 0) +#define OMP_TARGET_DATA_CLAUSES(NODE)\ + TREE_OPERAND (OMP_TARGET_DATA_CHECK (NODE), 1) + +#define OMP_TARGET_BODY(NODE) TREE_OPERAND (OMP_TARGET_CHECK (NODE), 0) +#define OMP_TARGET_CLAUSES(NODE) TREE_OPERAND (OMP_TARGET_CHECK (NODE), 1) + +#define OMP_TARGET_UPDATE_CLAUSES(NODE)\ + TREE_OPERAND (OMP_TARGET_UPDATE_CHECK (NODE), 0) + +#define OMP_CLAUSE_SIZE(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \ + OMP_CLAUSE_FROM, \ + OMP_CLAUSE_MAP), 1) + #define OMP_CLAUSE_CHAIN(NODE) TREE_CHAIN (OMP_CLAUSE_CHECK (NODE)) #define OMP_CLAUSE_DECL(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \ OMP_CLAUSE_PRIVATE, \ - OMP_CLAUSE_UNIFORM), 0) + OMP_CLAUSE__LOOPTEMP_), 0) #define OMP_CLAUSE_HAS_LOCATION(NODE) \ (LOCATION_LOCUS ((OMP_CLAUSE_CHECK (NODE))->omp_clause.locus) \ != UNKNOWN_LOCATION) @@ -1211,6 +1233,12 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_PARALLEL_COMBINED(NODE) \ (OMP_PARALLEL_CHECK (NODE)->base.private_flag) +/* True if OMP_ATOMIC* is supposed to be sequentially consistent + as opposed to relaxed. */ +#define OMP_ATOMIC_SEQ_CST(NODE) \ + (TREE_RANGE_CHECK (NODE, OMP_ATOMIC, \ + OMP_ATOMIC_CAPTURE_NEW)->base.private_flag) + /* True on a PRIVATE clause if its decl is kept around for debugging information only and its DECL_VALUE_EXPR is supposed to point to what it has been remapped to. */ @@ -1242,6 +1270,21 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_CLAUSE_SCHEDULE_CHUNK_EXPR(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE), 0) +#define OMP_CLAUSE_DEPEND_KIND(NODE) \ + (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEPEND)->omp_clause.subcode.depend_kind) + +#define OMP_CLAUSE_MAP_KIND(NODE) \ + (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)->omp_clause.subcode.map_kind) + +/* Nonzero if this map clause is for array (rather than pointer) based array + section with zero bias. Both the non-decl OMP_CLAUSE_MAP and + correspoidng OMP_CLAUSE_MAP_POINTER clause are marked with this flag. */ +#define OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION(NODE) \ + (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)->base.public_flag) + +#define OMP_CLAUSE_PROC_BIND_KIND(NODE) \ + (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PROC_BIND)->omp_clause.subcode.proc_bind_kind) + #define OMP_CLAUSE_COLLAPSE_EXPR(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 0) #define OMP_CLAUSE_COLLAPSE_ITERVAR(NODE) \ @@ -1262,6 +1305,11 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_CLAUSE_REDUCTION_PLACEHOLDER(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 3) +/* True if a REDUCTION clause may reference the original list item (omp_orig) + in its OMP_CLAUSE_REDUCTION_{,GIMPLE_}INIT. */ +#define OMP_CLAUSE_REDUCTION_OMP_ORIG_REF(NODE) \ + (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION)->base.public_flag) + /* True if a LINEAR clause doesn't need copy in. True for iterator vars which are always initialized inside of the loop construct, false otherwise. */ #define OMP_CLAUSE_LINEAR_NO_COPYIN(NODE) \ @@ -1275,9 +1323,29 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_CLAUSE_LINEAR_STEP(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LINEAR), 1) +#define OMP_CLAUSE_ALIGNED_ALIGNMENT(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_ALIGNED), 1) + +#define OMP_CLAUSE_NUM_TEAMS_EXPR(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_TEAMS), 0) + +#define OMP_CLAUSE_THREAD_LIMIT_EXPR(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \ + OMP_CLAUSE_THREAD_LIMIT), 0) + +#define OMP_CLAUSE_DEVICE_ID(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEVICE), 0) + +#define OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \ + OMP_CLAUSE_DIST_SCHEDULE), 0) + #define OMP_CLAUSE_SAFELEN_EXPR(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SAFELEN), 0) +#define OMP_CLAUSE_SIMDLEN_EXPR(NODE) \ + OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SIMDLEN), 0) + #define OMP_CLAUSE__SIMDUID__DECL(NODE) \ OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE__SIMDUID_), 0) @@ -1338,7 +1406,11 @@ extern void protected_set_expr_location (tree, location_t); /* Attributes for SSA_NAMEs for pointer-type variables. */ #define SSA_NAME_PTR_INFO(N) \ - SSA_NAME_CHECK (N)->ssa_name.ptr_info + SSA_NAME_CHECK (N)->ssa_name.info.ptr_info + +/* Value range info attributes for SSA_NAMEs of non pointer-type variables. */ +#define SSA_NAME_RANGE_INFO(N) \ + SSA_NAME_CHECK (N)->ssa_name.info.range_info /* Return the immediate_use information for an SSA_NAME. */ #define SSA_NAME_IMM_USE_NODE(NODE) SSA_NAME_CHECK (NODE)->ssa_name.imm_uses @@ -1349,9 +1421,6 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_CLAUSE_SET_CODE(NODE, CODE) \ ((OMP_CLAUSE_CHECK (NODE))->omp_clause.code = (CODE)) -#define OMP_CLAUSE_CODE(NODE) \ - (OMP_CLAUSE_CHECK (NODE))->omp_clause.code - #define OMP_CLAUSE_OPERAND(NODE, I) \ OMP_CLAUSE_ELT_CHECK (NODE, I) @@ -1652,10 +1721,10 @@ extern enum machine_mode vector_type_mode (const_tree); #define TYPE_DOMAIN(NODE) (ARRAY_TYPE_CHECK (NODE)->type_non_common.values) #define TYPE_FIELDS(NODE) \ (RECORD_OR_UNION_CHECK (NODE)->type_non_common.values) -#define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK(NODE)->type_non_common.values) +#define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK (NODE)->type_non_common.values) #define TYPE_ARG_TYPES(NODE) \ (FUNC_OR_METHOD_CHECK (NODE)->type_non_common.values) -#define TYPE_VALUES_RAW(NODE) (TYPE_CHECK(NODE)->type_non_common.values) +#define TYPE_VALUES_RAW(NODE) (TYPE_CHECK (NODE)->type_non_common.values) #define TYPE_METHODS(NODE) \ (RECORD_OR_UNION_CHECK (NODE)->type_non_common.maxval) @@ -1684,11 +1753,11 @@ extern enum machine_mode vector_type_mode (const_tree); /* For record and union types, information about this type, as a base type for itself. */ -#define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK(NODE)->type_non_common.binfo) +#define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK (NODE)->type_non_common.binfo) /* For non record and union types, used in a language-dependent way. */ #define TYPE_LANG_SLOT_1(NODE) \ - (NOT_RECORD_OR_UNION_CHECK(NODE)->type_non_common.binfo) + (NOT_RECORD_OR_UNION_CHECK (NODE)->type_non_common.binfo) /* Define accessor macros for information about type inheritance and basetypes. @@ -1711,16 +1780,16 @@ extern enum machine_mode vector_type_mode (const_tree); #define BINFO_VIRTUAL_P(NODE) (TREE_BINFO_CHECK (NODE)->base.static_flag) /* Flags for language dependent use. */ -#define BINFO_MARKED(NODE) TREE_LANG_FLAG_0(TREE_BINFO_CHECK(NODE)) -#define BINFO_FLAG_1(NODE) TREE_LANG_FLAG_1(TREE_BINFO_CHECK(NODE)) -#define BINFO_FLAG_2(NODE) TREE_LANG_FLAG_2(TREE_BINFO_CHECK(NODE)) -#define BINFO_FLAG_3(NODE) TREE_LANG_FLAG_3(TREE_BINFO_CHECK(NODE)) -#define BINFO_FLAG_4(NODE) TREE_LANG_FLAG_4(TREE_BINFO_CHECK(NODE)) -#define BINFO_FLAG_5(NODE) TREE_LANG_FLAG_5(TREE_BINFO_CHECK(NODE)) -#define BINFO_FLAG_6(NODE) TREE_LANG_FLAG_6(TREE_BINFO_CHECK(NODE)) +#define BINFO_MARKED(NODE) TREE_LANG_FLAG_0 (TREE_BINFO_CHECK (NODE)) +#define BINFO_FLAG_1(NODE) TREE_LANG_FLAG_1 (TREE_BINFO_CHECK (NODE)) +#define BINFO_FLAG_2(NODE) TREE_LANG_FLAG_2 (TREE_BINFO_CHECK (NODE)) +#define BINFO_FLAG_3(NODE) TREE_LANG_FLAG_3 (TREE_BINFO_CHECK (NODE)) +#define BINFO_FLAG_4(NODE) TREE_LANG_FLAG_4 (TREE_BINFO_CHECK (NODE)) +#define BINFO_FLAG_5(NODE) TREE_LANG_FLAG_5 (TREE_BINFO_CHECK (NODE)) +#define BINFO_FLAG_6(NODE) TREE_LANG_FLAG_6 (TREE_BINFO_CHECK (NODE)) /* The actual data type node being inherited in this basetype. */ -#define BINFO_TYPE(NODE) TREE_TYPE (TREE_BINFO_CHECK(NODE)) +#define BINFO_TYPE(NODE) TREE_TYPE (TREE_BINFO_CHECK (NODE)) /* The offset where this basetype appears in its containing type. BINFO_OFFSET slot holds the offset (in bytes) @@ -1728,19 +1797,19 @@ extern enum machine_mode vector_type_mode (const_tree); object that is allocated on behalf of this `type'. This is always 0 except when there is multiple inheritance. */ -#define BINFO_OFFSET(NODE) (TREE_BINFO_CHECK(NODE)->binfo.offset) +#define BINFO_OFFSET(NODE) (TREE_BINFO_CHECK (NODE)->binfo.offset) #define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE))) /* The virtual function table belonging to this basetype. Virtual function tables provide a mechanism for run-time method dispatching. The entries of a virtual function table are language-dependent. */ -#define BINFO_VTABLE(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtable) +#define BINFO_VTABLE(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vtable) /* The virtual functions in the virtual function table. This is a TREE_LIST that is used as an initial approximation for building a virtual function table for this basetype. */ -#define BINFO_VIRTUALS(NODE) (TREE_BINFO_CHECK(NODE)->binfo.virtuals) +#define BINFO_VIRTUALS(NODE) (TREE_BINFO_CHECK (NODE)->binfo.virtuals) /* A vector of binfos for the direct basetypes inherited by this basetype. @@ -1748,7 +1817,7 @@ extern enum machine_mode vector_type_mode (const_tree); If this basetype describes type D as inherited in C, and if the basetypes of D are E and F, then this vector contains binfos for inheritance of E and F by C. */ -#define BINFO_BASE_BINFOS(NODE) (&TREE_BINFO_CHECK(NODE)->binfo.base_binfos) +#define BINFO_BASE_BINFOS(NODE) (&TREE_BINFO_CHECK (NODE)->binfo.base_binfos) /* The number of basetypes for NODE. */ #define BINFO_N_BASE_BINFOS(NODE) (BINFO_BASE_BINFOS (NODE)->length ()) @@ -1766,12 +1835,13 @@ extern enum machine_mode vector_type_mode (const_tree); base. The actual contents are language-dependent. In the C++ front-end this field is an INTEGER_CST giving an offset into the vtable where the offset to the virtual base can be found. */ -#define BINFO_VPTR_FIELD(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vptr_field) +#define BINFO_VPTR_FIELD(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vptr_field) /* Indicates the accesses this binfo has to its bases. The values are access_public_node, access_protected_node or access_private_node. If this array is not present, public access is implied. */ -#define BINFO_BASE_ACCESSES(NODE) (TREE_BINFO_CHECK(NODE)->binfo.base_accesses) +#define BINFO_BASE_ACCESSES(NODE) \ + (TREE_BINFO_CHECK (NODE)->binfo.base_accesses) #define BINFO_BASE_ACCESS(NODE,N) \ (*BINFO_BASE_ACCESSES (NODE))[(N)] @@ -1780,18 +1850,18 @@ extern enum machine_mode vector_type_mode (const_tree); /* The index in the VTT where this subobject's sub-VTT can be found. NULL_TREE if there is no sub-VTT. */ -#define BINFO_SUBVTT_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_subvtt) +#define BINFO_SUBVTT_INDEX(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vtt_subvtt) /* The index in the VTT where the vptr for this subobject can be found. NULL_TREE if there is no secondary vptr in the VTT. */ -#define BINFO_VPTR_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_vptr) +#define BINFO_VPTR_INDEX(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vtt_vptr) /* The BINFO_INHERITANCE_CHAIN points at the binfo for the base inheriting this base for non-virtual bases. For virtual bases it points either to the binfo for which this is a primary binfo, or to the binfo of the most derived type. */ #define BINFO_INHERITANCE_CHAIN(NODE) \ - (TREE_BINFO_CHECK(NODE)->binfo.inheritance) + (TREE_BINFO_CHECK (NODE)->binfo.inheritance) /* Define fields and accessors for nodes representing declared names. */ @@ -2586,16 +2656,16 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree); #define TREE_OPTIMIZATION_BASE_OPTABS(NODE) \ (OPTIMIZATION_NODE_CHECK (NODE)->optimization.base_optabs) -/* Return a tree node that encapsulates the current optimization options. */ -extern tree build_optimization_node (void); +/* Return a tree node that encapsulates the optimization options in OPTS. */ +extern tree build_optimization_node (struct gcc_options *opts); extern void init_tree_optimization_optabs (tree); #define TREE_TARGET_OPTION(NODE) \ (&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts) -/* Return a tree node that encapsulates the current target options. */ -extern tree build_target_option_node (void); +/* Return a tree node that encapsulates the target options in OPTS. */ +extern tree build_target_option_node (struct gcc_options *opts); #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007) @@ -2716,7 +2786,7 @@ inline tree contains_struct_check (tree __t, const enum tree_node_structure_enum __s, const char *__f, int __l, const char *__g) { - if (tree_contains_struct[TREE_CODE(__t)][__s] != 1) + if (tree_contains_struct[TREE_CODE (__t)][__s] != 1) tree_contains_struct_check_failed (__t, __s, __f, __l, __g); return __t; } @@ -2725,7 +2795,7 @@ inline tree tree_class_check (tree __t, const enum tree_code_class __class, const char *__f, int __l, const char *__g) { - if (TREE_CODE_CLASS (TREE_CODE(__t)) != __class) + if (TREE_CODE_CLASS (TREE_CODE (__t)) != __class) tree_class_check_failed (__t, __class, __f, __l, __g); return __t; } @@ -2948,7 +3018,7 @@ inline const_tree contains_struct_check (const_tree __t, const enum tree_node_structure_enum __s, const char *__f, int __l, const char *__g) { - if (tree_contains_struct[TREE_CODE(__t)][__s] != 1) + if (tree_contains_struct[TREE_CODE (__t)][__s] != 1) tree_contains_struct_check_failed (__t, __s, __f, __l, __g); return __t; } @@ -2957,7 +3027,7 @@ inline const_tree tree_class_check (const_tree __t, const enum tree_code_class __class, const char *__f, int __l, const char *__g) { - if (TREE_CODE_CLASS (TREE_CODE(__t)) != __class) + if (TREE_CODE_CLASS (TREE_CODE (__t)) != __class) tree_class_check_failed (__t, __class, __f, __l, __g); return __t; } @@ -3659,21 +3729,20 @@ extern tree build_all_ones_cst (tree); extern tree build_zero_cst (tree); extern tree build_string (int, const char *); extern tree build_tree_list_stat (tree, tree MEM_STAT_DECL); -#define build_tree_list(t,q) build_tree_list_stat(t,q MEM_STAT_INFO) +#define build_tree_list(t, q) build_tree_list_stat (t, q MEM_STAT_INFO) extern tree build_tree_list_vec_stat (const vec<tree, va_gc> *MEM_STAT_DECL); #define build_tree_list_vec(v) build_tree_list_vec_stat (v MEM_STAT_INFO) extern tree build_decl_stat (location_t, enum tree_code, tree, tree MEM_STAT_DECL); extern tree build_fn_decl (const char *, tree); -#define build_decl(l,c,t,q) build_decl_stat (l,c,t,q MEM_STAT_INFO) +#define build_decl(l,c,t,q) build_decl_stat (l, c, t, q MEM_STAT_INFO) extern tree build_translation_unit_decl (tree); extern tree build_block (tree, tree, tree, tree); extern tree build_empty_stmt (location_t); extern tree build_omp_clause (location_t, enum omp_clause_code); -extern tree find_omp_clause (tree, enum omp_clause_code); extern tree build_vl_exp_stat (enum tree_code, int MEM_STAT_DECL); -#define build_vl_exp(c,n) build_vl_exp_stat (c,n MEM_STAT_INFO) +#define build_vl_exp(c, n) build_vl_exp_stat (c, n MEM_STAT_INFO) extern tree build_call_nary (tree, tree, int, ...); extern tree build_call_valist (tree, tree, int, va_list); @@ -3792,6 +3861,9 @@ extern tree build_type_attribute_variant (tree, tree); extern tree build_decl_attribute_variant (tree, tree); extern tree build_type_attribute_qual_variant (tree, tree, int); +/* Remove redundant "omp declare simd" attributes from fndecl. */ +extern void omp_remove_redundant_declare_simd_attrs (tree); + /* Return 0 if the attributes for two types are incompatible, 1 if they are compatible, and 2 if they are nearly compatible (which causes a warning to be generated). */ @@ -4383,15 +4455,6 @@ extern rtx expand_stack_save (void); extern void expand_stack_restore (tree); extern void expand_return (tree); -/* In tree-eh.c */ -extern void using_eh_for_cleanups (void); - -extern bool tree_could_trap_p (tree); -extern bool operation_could_trap_helper_p (enum tree_code, bool, bool, bool, - bool, tree, bool *); -extern bool operation_could_trap_p (enum tree_code, bool, bool, tree); -extern bool tree_could_throw_p (tree); - /* Compare and hash for any structure which begins with a canonical pointer. Assumes all pointers are interchangeable, which is sort of already assumed by gcc elsewhere IIRC. */ @@ -4469,7 +4532,7 @@ extern tree fold_build_call_array_loc (location_t, tree, tree, int, tree *); extern tree fold_build_call_array_initializer_loc (location_t, tree, tree, int, tree *); extern bool fold_convertible_p (const_tree, const_tree); #define fold_convert(T1,T2)\ - fold_convert_loc(UNKNOWN_LOCATION, T1, T2) + fold_convert_loc (UNKNOWN_LOCATION, T1, T2) extern tree fold_convert_loc (location_t, tree, tree); extern tree fold_single_bit_test (location_t, enum tree_code, tree, tree, tree); extern tree fold_ignored_result (tree); @@ -4489,7 +4552,7 @@ extern tree omit_one_operand_loc (location_t, tree, tree, tree); omit_two_operands_loc (UNKNOWN_LOCATION, T1, T2, T3, T4) extern tree omit_two_operands_loc (location_t, tree, tree, tree, tree); #define invert_truthvalue(T)\ - invert_truthvalue_loc(UNKNOWN_LOCATION, T) + invert_truthvalue_loc (UNKNOWN_LOCATION, T) extern tree invert_truthvalue_loc (location_t, tree); extern tree fold_unary_to_constant (enum tree_code, tree, tree); extern tree fold_binary_to_constant (enum tree_code, tree, tree, tree); @@ -4512,7 +4575,6 @@ extern tree fold_indirect_ref_loc (location_t, tree); extern tree build_simple_mem_ref_loc (location_t, tree); #define build_simple_mem_ref(T)\ build_simple_mem_ref_loc (UNKNOWN_LOCATION, T) -extern tree reference_alias_ptr_type (const_tree); extern tree build_invariant_address (tree, tree, HOST_WIDE_INT); extern tree constant_boolean_node (bool, tree); extern tree div_if_zero_remainder (const_tree, const_tree); @@ -4695,10 +4757,13 @@ extern tree get_binfo_at_offset (tree, HOST_WIDE_INT, tree); extern bool virtual_method_call_p (tree); extern tree obj_type_ref_class (tree ref); extern bool types_same_for_odr (tree type1, tree type2); -extern tree get_ref_base_and_extent (tree, HOST_WIDE_INT *, - HOST_WIDE_INT *, HOST_WIDE_INT *); extern bool contains_bitfld_component_ref_p (const_tree); extern bool type_in_anonymous_namespace_p (tree); +extern bool block_may_fallthru (const_tree); +extern void using_eh_for_cleanups (void); +extern bool using_eh_for_cleanups_p (void); + +extern const char *get_tree_code_name (enum tree_code); /* In tree-nested.c */ extern tree build_addr (tree, tree); @@ -4912,10 +4977,6 @@ extern unsigned int tree_decl_map_hash (const void *); #define tree_vec_map_hash tree_decl_map_hash #define tree_vec_map_marked_p tree_map_base_marked_p -/* In tree-ssa-address.c. */ -extern tree tree_mem_ref_addr (tree, tree); -extern void copy_ref_info (tree, tree); - /* In tree-vrp.c */ extern bool ssa_name_nonnegative_p (const_tree); @@ -5047,9 +5108,6 @@ is_lang_specific (tree t) return TREE_CODE (t) == LANG_TYPE || TREE_CODE (t) >= NUM_TREE_CODES; } -/* In gimple-low.c. */ -extern bool block_may_fallthru (const_tree); - /* In vtable-verify.c. */ extern void save_vtable_map_decl (tree); @@ -5129,6 +5187,31 @@ builtin_decl_implicit_p (enum built_in_function fncode) && builtin_info.implicit_p[uns_fncode]); } +/* Return true if T (assumed to be a DECL) is a global variable. + A variable is considered global if its storage is not automatic. */ + +static inline bool +is_global_var (const_tree t) +{ + return (TREE_STATIC (t) || DECL_EXTERNAL (t)); +} + +/* Return true if VAR may be aliased. A variable is considered as + maybe aliased if it has its address taken by the local TU + or possibly by another TU and might be modified through a pointer. */ + +static inline bool +may_be_aliased (const_tree var) +{ + return (TREE_CODE (var) != CONST_DECL + && !((TREE_STATIC (var) || TREE_PUBLIC (var) || DECL_EXTERNAL (var)) + && TREE_READONLY (var) + && !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (var))) + && (TREE_PUBLIC (var) + || DECL_EXTERNAL (var) + || TREE_ADDRESSABLE (var))); +} + /* For anonymous aggregate types, we need some sort of name to hold on to. In practice, this should not appear, but it should not be harmful if it does. */ |