aboutsummaryrefslogtreecommitdiff
path: root/gcc/objc/objc-act.h
diff options
context:
space:
mode:
authorZiemowit Laski <zlaski@apple.com>2004-09-08 00:49:44 +0000
committerZiemowit Laski <zlaski@gcc.gnu.org>2004-09-08 00:49:44 +0000
commit6408ef338629d26c64ed03cee951bc2e4e2bfddc (patch)
tree39e252e037a2e91d03654547f193dfc01d41993a /gcc/objc/objc-act.h
parent8662eb14c0ef6531d7086ec08f5e52b87c472ede (diff)
downloadgcc-6408ef338629d26c64ed03cee951bc2e4e2bfddc.zip
gcc-6408ef338629d26c64ed03cee951bc2e4e2bfddc.tar.gz
gcc-6408ef338629d26c64ed03cee951bc2e4e2bfddc.tar.bz2
Makefile.in (c-parse.o): Depend on $(C_COMMON_H).
[gcc/ChangeLog] 2004-09-07 Ziemowit Laski <zlaski@apple.com> * Makefile.in (c-parse.o): Depend on $(C_COMMON_H). * c-parse.in: Include c-common.h instead of objc-act.h. (ivar_decl_list, ivar_decls, ivar_decl, ivars, ivar_declarator, myparms, myparm): Remove %type declarations. (methodtype, optparms, OBJC_TYPE_QUAL, objc_quals, objc_qual, objc_typename, objc_try_catch_stmt, optellipsis): Add %type declarations. (objc_inherit_code, objc_public_flag): Remove. (typespec_nonreserved_nonattr): Call objc_get_protocol_qualified_type() instead of get_static_reference() and get_protocol_reference(). (stmt_nocomp): Call grokparm() on @catch parameter. (objcdef): Move semantic action to objc_finish_implementation(). (classdef): Move semantic action to objc_start_class_interface(), objc_continue_interface(), objc_finish_interface(), objc_start_class_implementation(), objc_continue_implementation(), objc_start_category_interface() and objc_start_category_implementation(). (protocoldef): Move semantic actions to objc_start_protocol() and objc_finish_interface(). (ivar_decl_list): Remove nonterminal. (visibility_spec): Move semantic actions to objc_set_visibility(). (ivar_decls): Remove assignment to $$. (ivar_decl): Rephrase in terms of component_decl; call objc_add_instance_variable(). (ivars, ivar_declarator): Remove nonterminals. (opt_semi): New nonterminal. (methodtype): Remove semantic actions. (methoddef): Move semantic actions to objc_set_method_type(), objc_start_method_definition() and objc_finish_method_definition(). (methodproto): Move semantic actions to objc_set_method_type() and objc_add_method_declaration(). (methoddecl): Use objc_typename instead of typename; move semantic actions to objc_build_method_signature(). (optarglist, myxdecls, mydecl, myparms, myparm): Remove nonterminals. (optparmlist): Express in terms of optparms and optellipsis. (optparms, optellipsis, objc_qual, objc_quals, objc_typename): New nonterminals. (keyworddecl): Use objc_typename instead of typename. (rid_to_yy): Mark RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_BYREF and RID_ONEWAY as returning OBJC_TYPE_QUAL to yyparse(). [gcc/objc/ChangeLog] 2004-09-07 Ziemowit Laski <zlaski@apple.com> * Make-lang.in (objc/objc-parse.o): Depend on $(C_COMMON_H) instead of objc/objc-act.h. (objc/objc-act.o): Depend on $(HASHTAB_H). * objc-act.c: Include hashtab.h; in ObjC++ mode, include cp-tree.h and objcp-decl.h instead of c-tree.h. (build_module_descriptor, get_class_ivars, synth_id_with_class_suffix, error_with_ivar, gen_method_decl, gen_declaration, setup_string_decl, build_protocol_template): Adjust prototypes. (build_module_initializer_routine, start_class, continue_class, finish_class, start_method_def, objc_start_function, start_protocol, build_method_decl, objc_add_method, add_instance_variable, build_ivar_reference, is_ivar, is_private, get_super_receiver, build_selector_table_decl, objc_push_parm, objc_get_parm_info, gen_type_name, gen_type_name_0, start_var_decl, finish_var_decl, create_field_decl): New prototypes. (objc_expand_function_end, comp_method_with_proto, objc_expr_last, gen_declaration_1, gen_declarator, is_complex_decl, adorn_decl, define_decl, create_builtin_decl, gen_declspecs): Remove prototypes. (TYPE_ID): Rename to OBJECT_TYPEDEF_NAME. (CLASS_TYPEDEF_NAME): New. (TAG_EXECCLASS): Change from a global variable to a #define. (TAG_RETURN_STRUCT): Delete. (TAG_GNUINIT): New, holds '__objc_gnu_init' name. (objc_inherit_code, objc_public_flag): New, moved from c-parse.in. (string_descriptor): New struct. (string_htab): New hash table. (string_hash, string_eq): New prototypes. (generate_struct_by_value_array): Call create_field_decl() instead of create_builtin_decl(). (objc_init): Do not initialize objc_ellipsis_node or TAG_EXECCLASS; In ObjC++ mode, call cxx_init() instead of c_objc_common_init(). (objc_finish_file): In ObjC++, call instantiate_pending_templates() and cp_finish_file(). (define_decl, get_static_reference, get_protocol_reference, create_builtin_decl): Remove functions. (objc_start_class_interface, objc_start_category_interface, objc_start_protocol, objc_continue_interface, objc_finish_interface, objc_start_class_implementation, objc_start_category_implementation, objc_continue_implementation, objc_finish_implementation, objc_set_visibility, objc_set_method_type, objc_build_method_signature, objc_add_method_declaration, objc_start_method_definition, objc_add_instance_variable, objc_get_protocol_qualified_type, create_field_decl, start_var_decl, finish_var_decl): New functions. (setup_string_decl): Simplify since it is only called once. (synth_module_prologue): Call build_class_template(); predefine 'id' and 'Class' as typedefs; rename 'temp_type' to 'type'; disable debug hooks for duration of function; fix GNU runtime messenger signatures to correspond to reality; forward-declare '__objc_exec_class' for the GNU runtime; call build_selector_table_decl(); in ObjC++ mode, generate 'extern "C" { ... }' wrappers around synthesized declarations; call build_protocol_template() and build_category_template(). (string_hash, string_eq): New functions. (objc_build_string_object): Check metaclass correctness only once; store string literals in hash table. (objc_build_constructor): Do not convert initializer elements; adjust for ObjC++ impedance mismatch. (build_objc_symtab_template): Call create_field_decl() instead of create_builtin_decl(). (init_objc_symtab): Add missing conversion to initializer element. (build_metadata_decl): Call start_var_decl() instead of define_decl(). (generate_objc_symtab_decl): Do not call build_category_template(); call start_var_decl() and finish_var_decl() instead of start_decl() and finish_decl(). (build_module_descriptor): Call create_field_decl() instead of grokfield(); call start_var_decl() and finish_var_decl() instead of start_decl() and finish_decl(); always mark module descriptor as used; move GNU runtime-specific functionality to build_module_initializer_routine(). (build_module_initializer_routine): New function, broken off of build_module_descriptor(). (objc_static_init_needed_p, objc_generate_static_init_call): New functions. (generate_static_references, generate_strings, build_selector_translation_table, generate_descriptor_table, generate_ivars_list, generate_dispatch_table, generate_category): Call start_var_decl() and finish_var_decl() instead of start_decl() and finish_decl(); build a type directly instead of via groktypename(). (build_selector_reference_decl, build_selector_table_decl, build_class_reference_decl, build_protocol_reference, generate_objc_image_info): Call start_var_decl() instead of build_decl(). (build_selector_reference): For GNU runtime, do not call build_selector_reference_decl(). (build_selector, build_typed_selector_reference): Always convert result to the selector type. (add_objc_string): Cast return value to 'char *'. (build_method_prototype_template, build_selector_template, build_method_template): Use actual selector type for fields pointing to selectors. (finish_objc): For GNU runtime, call build_module_initializer_routine() after build_module_descriptor(). (generate_protocol_list, generate_shared_structures): Call start_var_decl() and finish_var_decl() instead of start_decl() and finish_decl(); build a type directly instead of via groktypename(). (synth_id_with_class_suffix): Return a string. (get_arg_type_list): For instance methods, use the instance type for 'self'; do not call groktypename_in_parm_context(). (build_objc_string_decl): Squash redeclaration errors in ObjC++. (objc_is_class_name): Use OBJC_TYPE_NAME instead of TYPE_NAME; handle RECORD_TYPEs in ObjC as well as ObjC++. (objc_is_id): New function. (objc_is_object_ptr): Return the canonical type node. (objc_get_class_ivars): Simplify using get_class_ivars(). (get_class_ivars): Remove second parameter; create a fresh copy of the ivar list for each call; do not check for existence of super class. (objc_eh_runtime_type): Mark #ifndef OBJCPLUS. (objc_init_exceptions): When using SJLJ-style exceptions, require the use of '-fobjc-exceptions' flag; do not require it for DWARF-style exceptions. (objc_build_exc_ptr, next_sjlj_build_try_catch_finally): Use objc_object_type instead of objc_id_type. (objc_begin_catch_clause): Convert the incoming PARM_DECL into a VAR_DECL before placing it in the appropriate scope; do not call define_decl(); adjust call to c_begin_compound_stmt(); use objc_object_type instead of objc_id_type. (build_next_objc_exception_stuff): Call create_field_decl() instead of create_builtin_decl(); construct type directly instead of calling groktypename(); use OBJC_VOID_AT_END to mark end of function parameters. (build_private_template): Adjust call to get_class_ivars(); build a type directly instead of via groktypename(). (build_protocol_template, build_method_prototype_list_template, build_method_prototype_template, build_category_template, build_selector_template, build_class_template, build_super_template, build_ivar_template, build_ivar_list_template, build_method_list_template, build_method_template): Call create_field_decl() instead of grokfield(). (objc_method_parm_type): Do not call groktypename(). (generate_descriptor_table): Call start_var_decl() and finish_var_decl() instead of start_decl() and finish_decl(). (generate_method_descriptors, build_protocol_initializer, generate_dispatch_tables, build_category_initializer, build_shared_structure_initializer): Do not call groktypename(). (generate_protocols): Call start_var_decl() and finish_var_decl() instead of start_decl() and finish_decl(); do not call groktypename(). (error_with_ivar): Remove last parameter. (check_ivars): Do not iterate ovar CLASS_RAW_IVARS lists in addition to CLASS_IVARS lists; adjust calls to error_with_ivar(). (generate_ivar_lists): Convert one of the initializer elements; do not call groktypename(). (get_arg_type_list, start_method_def, gen_method_def): Account for new representation of variable arguments and '...' in Objective-C methods; add Objective-C++ impedance matching code. (is_objc_type_qualifier): Remove function. (adjust_type_for_id_default): Simplify; there is no longer a need to wade through declspecs. (lookup_interface, start_class, continue_class, finish_class, start_method_def, start_protocol, build_method_decl, objc_add_method, add_instance_variable, build_ivar_reference, is_ivar, is_private, get_super_receiver, objc_build_finally_epilogue): Make into static functions. (receiver_is_class_object): Use new IS_CLASS() macro. (objc_build_message_expr): Tweak ObjC++ message argument handling; call objc_finish_message_expr() instead of finish_message_expr(). (finish_message_expr): Rename to objc_finish_message_expr(); use OBJC_TYPE_NAME and OBJC_SET_TYPE_NAME macros instead of TYPE_NAME. call gen_type_name() instead of gen_declaration(); call objc_is_id() instead of using IS_ID and IS_CLASS; Use objc_class_name instead of calling get_identifier("Class"); handle CONVERT_EXPRs in receiver. (build_objc_method_call, warn_with_method): Do not call groktypename(). (build_ivar_reference): Call convert() instead of clobbering in a type. (hash_init): Initialize string_htab hash table. (add_instance_variable): Simplify parameter list; do not call grokfield(); do not populate CLASS_IVARS list. (start_class): Check for the existence of super class, if one was specified. (continue_class): Use CLASS_RAW_IVARS rather than CLASS_IVARS; do not call build_class_template(); adjust call to get_class_ivars(); call build_decl(), pushdecl() and finish_decl() instead of define_decl(). (finish_class): Call build_decl(), pushdecl() and finish_decl() instead of define_decl(). (add_protocols): Use PROTOCOL_BINFO_ELTS for the tree vector size. (start_protocol): Do not call build_protocol_template(); use PROTOCOL_BINFO_ELTS for the tree vector size. (encode_type_qualifiers): Do not handle the 'const' qualifier here. (encode_pointer): Encode 'const char *' as 'r*', for backwards compatibility. (encode_array): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld". (encode_type): Handle the 'const' qualifier here. (objc_parmlist): New global variable, sued by objc_push_parm and objc_get_parm_info(). (objc_push_parm, objc_get_parm_info): New functions. (objc_expr_last): Remove function. (synth_self_and_ucmd_args): For instance methods, use the instance type for 'self'; call objc_push_parm() instead of push_parm_decl(). (start_method_def): Do not call push_scope(), declare_parm_level(), pop_scope(), push_parm_decl(), store_parm_decls() or objc_expr_last(); just use objc_push_parm() and objc_get_parm_info(). (comp_method_with_proto): Remove function. (objc_types_are_equivalent): Strip away indirections before comparing underlying types. (comp_proto_with_proto): Do not call groktypename(); types are no longer in raw declspec format. (objc_start_function): New function. (really_start_method): Call comp_proto_with_proto() instead of comp_method_with_proto(); call objc_start_function() instead of hand-crafting a function declarator. (continue_method_def, objc_expand_function_end): Remove functions. (get_super_receiver): Call objc_get_current_scope() instead of get_current_scope(); reference 'super_class' field (instead of 'class'). (finish_method_def): Rename to objc_finish_method_definition() and add a function decl parameter; move method encoding call from objc_expand_function_end(). (is_complex_decl, adorn_decl, gen_declarator, gen_declspecs, gen_declaration_1): Remove functions. (tmpbuf, RAW_DECLSPEC): Remove. (gen_declaration): Remove second parameter; simplify to deal with TYPE_P nodes instead of raw declspecs. (gen_type_name, gen_type_name_0): New functions. (gen_method_decl): Remove second parameter; call gen_type_name() instead of gen_declaration_1(). (dump_interface): Adjust calls to gen_declaration() and gen_method_decl(); do not allocate a separate string buffer. (init_objc): Allocate a larger string buffer to accommodate dump_interface(); adjust call to build_module_descriptor(); add call to build_module_initializer_routine() for the GNU runtime. (generate_classref_translation_entry): Do not call start_decl(); call finish_var_decl() instead of finish_decl(); call convert() instead of build_c_cast(). * objc-act.h (CLASS_OWN_IVARS): Remove accessor. (CLASS_BINFO_ELTS): Reduce from 6 to 5, now that CLASS_OWN_IVARS is gone. (OCTI_GNU_INIT_DECL, GNU_INIT_decl): New. (OCTI_ELLIPSIS_NODE, objc_ellipsis_node): Remove. (OCTI_ID_ID, id_type, objc_id_id): Rename to OCTI_ID_NAME, objc_object_type and objc_object_name, respectively. (OCTI_CLS_REF, OCTI_CLASS_NAME, objc_class_reference, objc_class_name): New. (IS_CLASS): New macro. (IS_ID, IS_SUPER): Robustify. (OCTI_EXECCLASS_DECL, execclass_decl): New. (finish_file, start_class, continue_class, finish_class, start_method_def, continue_method_def, finish_method_def, start_protocol, finish_protocol, objc_build_throw_stmt, objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue, objc_build_synchronized_epilogue, objc_build_try_prologue, objc_build_try_epilogue, objc_build_catch_stmt, objc_build_catch_epilogue, objc_build_finally_prologue, objc_build_finally_epilogue, is_ivar, is_private, is_public, add_instance_variable, objc_add_method, get_super_receiver, objc_clear_super_receiver, get_class_ivars_from_name, get_class_reference, get_static_reference, get_object_reference, build_message_expr, finish_message_expr, build_selector_expr, build_ivar_reference, build_keyword_decl, build_method_decl, build_protocol_expr, build_objc_string_object, objc_declare_alias, objc_declare_class, objc_declare_protocols, objc_comptypes, objc_check_decl, build_encode_expr): Remove prototypes. (imp_count, cat_count): Make GGC-aware. (OBJC_SET_TYPE_NAME): New macro. From-SVN: r87168
Diffstat (limited to 'gcc/objc/objc-act.h')
-rw-r--r--gcc/objc/objc-act.h94
1 files changed, 28 insertions, 66 deletions
diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h
index d5d6314..b80761d 100644
--- a/gcc/objc/objc-act.h
+++ b/gcc/objc/objc-act.h
@@ -28,61 +28,12 @@ bool objc_init (void);
const char *objc_printable_name (tree, int);
void objc_finish_file (void);
-/* used by yyparse */
-
-tree start_class (enum tree_code, tree, tree, tree);
-tree continue_class (tree);
-void finish_class (tree);
-void start_method_def (tree);
-void continue_method_def (void);
-void finish_method_def (void);
-tree start_protocol (enum tree_code, tree, tree);
-void finish_protocol (tree);
-
-tree objc_build_throw_stmt (tree);
-void objc_begin_try_stmt (location_t, tree);
-void objc_begin_catch_clause (tree);
-void objc_finish_catch_clause (void);
-void objc_build_finally_clause (location_t, tree);
-void objc_finish_try_stmt (void);
-void objc_build_synchronized (location_t, tree, tree);
-
-tree is_ivar (tree, tree);
-int is_private (tree);
-int objc_is_public (tree, tree);
-tree add_instance_variable (tree, int, tree, tree, tree);
-tree objc_add_method (tree, tree, int);
-tree get_super_receiver (void);
-void objc_clear_super_receiver (void);
-tree objc_get_class_ivars (tree);
-tree objc_get_class_reference (tree);
-tree get_static_reference (tree, tree);
-tree get_protocol_reference (tree);
-tree objc_build_message_expr (tree);
-tree finish_message_expr (tree, tree, tree);
-tree objc_build_selector_expr (tree);
-tree build_ivar_reference (tree);
-tree objc_build_keyword_decl (tree, tree, tree);
-tree build_method_decl (enum tree_code, tree, tree, tree);
-tree objc_build_protocol_expr (tree);
-tree objc_build_string_object (tree);
-
-void objc_declare_alias (tree, tree);
-void objc_declare_class (tree);
-void objc_declare_protocols (tree);
-
-/* the following routines are used to implement statically typed objects */
-
-int objc_comptypes (tree, tree, int);
-void objc_check_decl (tree);
-
-/* NeXT extensions */
-
-tree objc_build_encode_expr (tree);
+/* NB: The remaining public functions are prototyped in c-common.h, for the
+ benefit of stub-objc.c and objc-act.c. */
/* Objective-C structures */
-#define CLASS_LANG_SLOT_ELTS 6
+#define CLASS_LANG_SLOT_ELTS 5
#define PROTOCOL_LANG_SLOT_ELTS 2
/* KEYWORD_DECL */
@@ -108,13 +59,13 @@ tree objc_build_encode_expr (tree);
#define CLASS_STATIC_TEMPLATE(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 2)
#define CLASS_CATEGORY_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 3)
#define CLASS_PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 4)
-#define CLASS_OWN_IVARS(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 5)
#define PROTOCOL_NAME(CLASS) ((CLASS)->type.name)
#define PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 0)
#define PROTOCOL_NST_METHODS(CLASS) ((CLASS)->type.minval)
#define PROTOCOL_CLS_METHODS(CLASS) ((CLASS)->type.maxval)
#define PROTOCOL_FORWARD_DECL(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 1)
#define PROTOCOL_DEFINED(CLASS) TREE_USED (CLASS)
+
/* We need to distinguish TYPE_PROTOCOL_LISTs from TYPE_CONTEXTs, both of which
are stored in the same accessor slot. */
#define TYPE_PROTOCOL_LIST(TYPE) \
@@ -123,12 +74,11 @@ tree objc_build_encode_expr (tree);
? (TYPE)->type.context : NULL_TREE)
#define SET_TYPE_PROTOCOL_LIST(TYPE, P) (TYPE_CHECK (TYPE)->type.context = (P))
-/* Set by `continue_class' and checked by `objc_is_public'. */
-
-#define TREE_STATIC_TEMPLATE(record_type) (TREE_PRIVATE (record_type))
+#define TREE_STATIC_TEMPLATE(record_type) (TREE_PUBLIC (record_type))
#define TYPED_OBJECT(type) \
(TREE_CODE (type) == RECORD_TYPE && TREE_STATIC_TEMPLATE (type))
#define OBJC_TYPE_NAME(type) TYPE_NAME(type)
+#define OBJC_SET_TYPE_NAME(type, name) (TYPE_NAME (type) = name)
/* Define the Objective-C or Objective-C++ language-specific tree codes. */
@@ -182,8 +132,11 @@ struct imp_entry GTY(())
};
extern GTY(()) struct imp_entry *imp_list;
-extern int imp_count; /* `@implementation' */
-extern int cat_count; /* `@category' */
+extern GTY(()) int imp_count; /* `@implementation' */
+extern GTY(()) int cat_count; /* `@category' */
+
+extern GTY(()) enum tree_code objc_inherit_code;
+extern GTY(()) int objc_public_flag;
/* Objective-C/Objective-C++ global tree enumeration. */
@@ -194,7 +147,6 @@ enum objc_tree_index
OCTI_SELF_ID,
OCTI_UCMD_ID,
OCTI_UNUSED_LIST,
- OCTI_ELLIPSIS_NODE,
OCTI_SELF_DECL,
OCTI_UMSG_DECL,
@@ -231,6 +183,7 @@ enum objc_tree_index
OCTI_MCLS_DECL,
OCTI_SEL_TABLE_DECL,
OCTI_MODULES_DECL,
+ OCTI_GNU_INIT_DECL,
OCTI_INTF_CTX,
OCTI_IMPL_CTX,
@@ -251,13 +204,15 @@ enum objc_tree_index
OCTI_MODULE_TEMPL,
OCTI_SUPER_TEMPL,
OCTI_OBJ_REF,
+ OCTI_CLS_REF,
OCTI_METH_PROTO_TEMPL,
OCTI_FUNCTION1_TEMPL,
OCTI_FUNCTION2_TEMPL,
OCTI_OBJ_ID,
OCTI_CLS_ID,
- OCTI_ID_ID,
+ OCTI_ID_NAME,
+ OCTI_CLASS_NAME,
OCTI_CNST_STR_ID,
OCTI_CNST_STR_TYPE,
OCTI_CNST_STR_GLOB_ID,
@@ -280,6 +235,7 @@ enum objc_tree_index
OCTI_RETHROW_EXCEPTION_DECL,
OCTI_EVAL_ONCE_DECL,
OCTI_CATCH_TYPE,
+ OCTI_EXECCLASS_DECL,
OCTI_MAX
};
@@ -297,7 +253,6 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
#define self_id objc_global_trees[OCTI_SELF_ID]
#define ucmd_id objc_global_trees[OCTI_UCMD_ID]
#define unused_list objc_global_trees[OCTI_UNUSED_LIST]
-#define objc_ellipsis_node objc_global_trees[OCTI_ELLIPSIS_NODE]
#define self_decl objc_global_trees[OCTI_SELF_DECL]
#define umsg_decl objc_global_trees[OCTI_UMSG_DECL]
@@ -309,8 +264,8 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
objc_global_trees[OCTI_GET_MCLASS_DECL]
#define objc_super_type objc_global_trees[OCTI_SUPER_TYPE]
-#define objc_selector_type objc_global_trees[OCTI_SEL_TYPE]
-#define objc_id_type objc_global_trees[OCTI_ID_TYPE]
+#define objc_selector_type objc_global_trees[OCTI_SEL_TYPE]
+#define objc_object_type objc_global_trees[OCTI_ID_TYPE]
#define objc_class_type objc_global_trees[OCTI_CLS_TYPE]
#define objc_instance_type objc_global_trees[OCTI_NST_TYPE]
#define objc_protocol_type objc_global_trees[OCTI_PROTO_TYPE]
@@ -318,11 +273,13 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
/* Type checking macros. */
#define IS_ID(TYPE) \
- (TYPE_MAIN_VARIANT (TYPE) == TYPE_MAIN_VARIANT (objc_id_type))
+ (POINTER_TYPE_P (TYPE) && TREE_TYPE (TYPE) == TREE_TYPE (objc_object_type))
+#define IS_CLASS(TYPE) \
+ (POINTER_TYPE_P (TYPE) && TREE_TYPE (TYPE) == TREE_TYPE (objc_class_type))
#define IS_PROTOCOL_QUALIFIED_ID(TYPE) \
(IS_ID (TYPE) && TYPE_PROTOCOL_LIST (TYPE))
#define IS_SUPER(TYPE) \
- (TREE_CODE (TYPE) == POINTER_TYPE && TREE_TYPE (TYPE) == objc_super_template)
+ (POINTER_TYPE_P (TYPE) && TREE_TYPE (TYPE) == objc_super_template)
#define class_chain objc_global_trees[OCTI_CLS_CHAIN]
#define alias_chain objc_global_trees[OCTI_ALIAS_CHAIN]
@@ -355,6 +312,7 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
#define UOBJC_METACLASS_decl objc_global_trees[OCTI_MCLS_DECL]
#define UOBJC_SELECTOR_TABLE_decl objc_global_trees[OCTI_SEL_TABLE_DECL]
#define UOBJC_MODULES_decl objc_global_trees[OCTI_MODULES_DECL]
+#define GNU_INIT_decl objc_global_trees[OCTI_GNU_INIT_DECL]
/* The following are used when compiling a class implementation.
implementation_template will normally be an interface, however if
@@ -400,12 +358,15 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
#define objc_eval_once objc_global_trees[OCTI_EVAL_ONCE_DECL]
#define objc_catch_type objc_global_trees[OCTI_CATCH_TYPE]
+#define execclass_decl objc_global_trees[OCTI_EXECCLASS_DECL]
+
#define objc_method_template objc_global_trees[OCTI_METH_TEMPL]
#define objc_ivar_template objc_global_trees[OCTI_IVAR_TEMPL]
#define objc_symtab_template objc_global_trees[OCTI_SYMTAB_TEMPL]
#define objc_module_template objc_global_trees[OCTI_MODULE_TEMPL]
#define objc_super_template objc_global_trees[OCTI_SUPER_TEMPL]
#define objc_object_reference objc_global_trees[OCTI_OBJ_REF]
+#define objc_class_reference objc_global_trees[OCTI_CLS_REF]
#define objc_method_prototype_template \
objc_global_trees[OCTI_METH_PROTO_TEMPL]
#define function1_template objc_global_trees[OCTI_FUNCTION1_TEMPL]
@@ -413,7 +374,8 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
#define objc_object_id objc_global_trees[OCTI_OBJ_ID]
#define objc_class_id objc_global_trees[OCTI_CLS_ID]
-#define objc_id_id objc_global_trees[OCTI_ID_ID]
+#define objc_object_name objc_global_trees[OCTI_ID_NAME]
+#define objc_class_name objc_global_trees[OCTI_CLASS_NAME]
#define constant_string_id objc_global_trees[OCTI_CNST_STR_ID]
#define constant_string_type objc_global_trees[OCTI_CNST_STR_TYPE]
#define constant_string_global_id \