Commit 6408ef33 by Ziemowit Laski Committed by Ziemowit Laski

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
parent 8662eb14
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().
2004-09-08 Alan Modra <amodra@bigpond.net.au>
* doc/tm.texi (MD_UNWIND_SUPPORT): Document.
......
......@@ -1352,7 +1352,7 @@ c-errors.o: c-errors.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(C_TREE_H) $(FLAGS_H) $(DIAGNOSTIC_H) $(TM_P_H)
c-parse.o : c-parse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(GGC_H) intl.h $(C_TREE_H) input.h $(FLAGS_H) toplev.h output.h $(CPPLIB_H) \
varray.h gt-c-parse.h langhooks.h
varray.h gt-c-parse.h langhooks.h $(C_COMMON_H)
srcextra: gcc.srcextra lang.srcextra
......
......@@ -66,18 +66,17 @@ objc/objc-lang.o : objc/objc-lang.c \
objc/objc-parse.o : objc/objc-parse.c \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_TREE_H) \
toplev.h $(GGC_H) c-pragma.h input.h flags.h output.h objc/objc-act.h \
langhooks.h
toplev.h $(GGC_H) c-pragma.h input.h flags.h output.h langhooks.h $(C_COMMON_H)
objc/objc-act.o : objc/objc-act.c \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(TM_P_H) \
$(EXPR_H) $(TARGET_H) $(C_TREE_H) diagnostic.h toplev.h flags.h \
objc/objc-act.h input.h function.h output.h debug.h langhooks.h \
$(LANGHOOKS_DEF_H) gt-objc-objc-act.h
$(LANGHOOKS_DEF_H) $(HASHTAB_H) gt-objc-objc-act.h
objc.srcextra: objc/objc-parse.c objc/objc-parse.y
-cp -p $^ $(srcdir)/objc
objc/objc-parse.c : objc/objc-parse.y
-$(BISON) $(BISONFLAGS) -o $@ $<
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -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 \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment