diff options
Diffstat (limited to 'contrib/gcc/cp/cp-tree.h')
-rw-r--r-- | contrib/gcc/cp/cp-tree.h | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/contrib/gcc/cp/cp-tree.h b/contrib/gcc/cp/cp-tree.h index 6593832..1dafeb9 100644 --- a/contrib/gcc/cp/cp-tree.h +++ b/contrib/gcc/cp/cp-tree.h @@ -1052,6 +1052,13 @@ struct lang_type_class GTY(()) unsigned has_complex_assign_ref : 1; unsigned non_aggregate : 1; + /* APPLE LOCAL begin omit calls to empty destructors 5559195 */ + unsigned has_nontrivial_destructor_body : 1; + unsigned destructor_nontrivial_because_of_base : 1; + unsigned destructor_triviality_final : 1; + /* APPLE LOCAL end omit calls to empty destructors 5559195 */ + + /* When adding a flag here, consider whether or not it ought to apply to a template instance if it applies to the template. If so, make sure to copy it in instantiate_class_template! */ @@ -1059,7 +1066,9 @@ struct lang_type_class GTY(()) /* There are some bits left to fill out a 32-bit word. Keep track of this by updating the size of this bitfield whenever you add or remove a flag. */ - unsigned dummy : 12; + /* APPLE LOCAL begin omit calls to empty destructors 5559195 */ + unsigned dummy : 10; + /* APPLE LOCAL end omit calls to empty destructors 5559195 */ tree primary_base; VEC(tree_pair_s,gc) *vcall_indices; @@ -2439,6 +2448,8 @@ extern void decl_shadowed_for_var_insert (tree, tree); || TREE_CODE (TYPE) == ENUMERAL_TYPE \ || ARITHMETIC_TYPE_P (TYPE) \ || TYPE_PTR_P (TYPE) \ + /* APPLE LOCAL blocks 6040305 */ \ + || TREE_CODE (TYPE) == BLOCK_POINTER_TYPE \ || TYPE_PTRMEMFUNC_P (TYPE)) /* [dcl.init.aggr] @@ -2520,6 +2531,20 @@ extern void decl_shadowed_for_var_insert (tree, tree); #define TYPE_HAS_NONTRIVIAL_DESTRUCTOR(NODE) \ (TYPE_LANG_FLAG_4 (NODE)) +/* APPLE LOCAL begin omit calls to empty destructors 5559195 */ +/* One if the body of the destructor of class type NODE has been shown to do + nothing, else zero. */ +#define CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->has_nontrivial_destructor_body) + +/* One if destructor of this type must be called by its base classes because + one of its base classes' destructors must be called. */ +#define CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->destructor_nontrivial_because_of_base) + +/* One if the values of CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE + and CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY are final. */ +#define CLASSTYPE_DESTRUCTOR_TRIVIALITY_FINAL(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->destructor_triviality_final) +/* APPLE LOCAL end omit calls to empty destructors 5559195 */ + /* Nonzero for class type means that copy initialization of this type can use a bitwise copy. */ #define TYPE_HAS_TRIVIAL_INIT_REF(NODE) \ @@ -3704,6 +3729,8 @@ typedef enum cp_declarator_kind { cdk_pointer, cdk_reference, cdk_ptrmem, + /* APPLE LOCAL blocks 6040305 (ch) */ + cdk_block_pointer, cdk_error } cp_declarator_kind; @@ -3772,6 +3799,13 @@ struct cp_declarator { /* For cdk_ptrmem, the class type containing the member. */ tree class_type; } pointer; + /* APPLE LOCAL begin blocks 6040305 (ch) */ + /* For cdk_block_pointer. */ + struct { + /* The cv-qualifiers for the pointer. */ + cp_cv_quals qualifiers; + } block_pointer; + /* APPLE LOCAL end blocks 6040305 (ch) */ } u; }; @@ -3922,6 +3956,8 @@ extern tree push_throw_library_fn (tree, tree); extern tree check_tag_decl (cp_decl_specifier_seq *); extern tree shadow_tag (cp_decl_specifier_seq *); extern tree groktypename (cp_decl_specifier_seq *, const cp_declarator *); +/* APPLE LOCAL 6339747 */ +extern tree grokblockdecl (cp_decl_specifier_seq *, const cp_declarator *); extern tree start_decl (const cp_declarator *, cp_decl_specifier_seq *, int, tree, tree, tree *); extern void start_decl_1 (tree, bool); extern void cp_finish_decl (tree, tree, bool, tree, int); @@ -4600,5 +4636,11 @@ extern void cp_genericize (tree); extern void cp_cpp_error (cpp_reader *, int, const char *, va_list *) ATTRIBUTE_GCC_CXXDIAG(3,0); +/* APPLE LOCAL radar 5741070 */ +extern tree c_return_interface_record_type (tree); +/* APPLE LOCAL begin blocks 6040305 (cg) */ +extern cp_declarator* make_block_pointer_declarator (tree, cp_cv_quals, + cp_declarator *); +/* APPLE LOCAL end blocks 6040305 (cg) */ #endif /* ! GCC_CP_TREE_H */ |