2012-06-14  Release Manager

	* GCC 4.7.1 released.

2012-03-22  Release Manager

	* GCC 4.7.0 released.

2011-11-12  Iain Sandoe  <iains@gcc.gnu.org>

	* objc-next-runtime-abi-01.c (objc_eh_personality): Use gcc personality
	for Objective-C m32.

2011-10-29  Iain Sandoe  <iains@gcc.gnu.org>

	PR target/47997
	* objc-act.c (objc_build_string_object): Remove redundant second
	call to fix_string_type ().  Add a checking assert that we are,
	indeed, passed a STRING_CST.

2011-10-18  Mikael Pettersson  <mikpe@it.uu.se>

	PR objc/50743
	* objc-act.c (check_duplicates): Cast TREE_VEC_LENGTH result to
	size_t to avoid signed/unsigned
	comparison.
	(insert_method_into_method_map): Likewise.

2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-map.h: New file.
	* objc-map.c: New file.	
	* config-lang.in (gtfiles): Added objc-map.h.
	* Make-lang.in (OBJC_OBJS): Added objc-map.o.
	(objc/objc-map.o): New rule.
	(objc/objc-act.o): Depend on objc/objc-map.h.
	* objc-next-runtime-abi-02.c: Added a TODO comment.
	* objc-act.c: Include objc-map.h.
	(nst_method_hash_list, cls_method_hash_list): Removed.
	(instance_method_map, class_method_map): New.
	(cls_name_hash_list, als_name_hash_list): Removed.
	(class_name_map, alias_name_map): Removed.
	(ivar_offset_hash_list): Removed.
	(hash_class_name_enter, hash_class_name_lookup, hash_enter,
	hash_lookup, hash_add_attr, add_method_to_hash_list): Removed.
	(interface_hash_init): New.
	(objc_init): Call interface_hash_init.
	(objc_write_global_declarations): Iterate over class_method_map
	and instance_method_map instead of cls_method_hash_list and
	nst_method_hash_list.
	(objc_declare_alias): Use alias_name_map instead of
	cls_name_hash_list.
	(objc_is_class_name): Use class_name_map and alias_name_map
	instead of cls_name_hash_list and als_name_hash_list.
	(interface_tuple, interface_htab, hash_interface, eq_interface):
	Removed.
	(interface_map): New.
	(add_class): Renamed to add_interface.  Use interface_map instead
	of interface_htab.
	(lookup_interface): Use interface_map instead of interface_htab.
	(check_duplicates): Changed first argument to be a tree,
	potentially a TREE_VEC, instead of a hash.  Changed implementation
	to match.
	(lookup_method_in_hash_lists): Use class_method_map and
	instance_method_map instead of cls_method_hash_list and
	nst_method_hash_list.
	(objc_build_selector_expr): Likewise.
	(hash_func): Removed.
	(hash_init): Create instance_method_map, class_method_map,
	class_name_map, and alias_name_map.  Do not create
	nst_method_hash_list, cls_method_hash_list, cls_name_hash_list,
	als_name_hash_list, and ivar_offset_hash_list.
	(insert_method_into_method_map): New.
	(objc_add_method): Use insert_method_into_method_map instead of
	add_method_to_hash_list.
	(start_class): Call add_interface instead of add_class.
	* objc-act.h (cls_name_hash_list, als_name_hash_list,
	nst_method_hash_list, cls_method_hash_list): Removed.

2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* objc-next-runtime-abi-01.c (objc_build_exc_ptr): Delete old
	interface with two parallel arrays to hold standard builtin
	declarations, and replace it with a function based interface that
	can support creating builtins on the fly in the future.  Change
	all uses, and poison the old names.  Make sure 0 is not a
	legitimate builtin index.
	* objc-next-runtime-abi-02.c (objc_build_exc_ptr): Ditto.
	* objc-gnu-runtime-abi-01.c (objc_build_exc_ptr): Ditto.

2011-07-19  Richard Guenther  <rguenther@suse.de>

	* objc-next-runtime-abi-02.c (objc_v2_build_ivar_ref):
	Use fold_build_pointer_plus.
	(objc2_build_ehtype_initializer): Likewise.

2011-07-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-encoding.h (obstack.h): Do not include.
	(util_obstack, util_firstobj): Do not declare.
	(encode_field_decl): Updated prototype to return a tree and take a
	single tree argument.  Updated comments.
	* objc-encoding.c (util_obstack, util_firstobj): Made static.
	(objc_encoding_init): New.
	(encode_field_decl): Existing function renamed to encode_field and
	made static.  New encode_field_decl wrapper function added.
	(encode_aggregate_fields): Update call to encode_field_decl to
	call encode_field.
	* objc-next-runtime-abi-02.c (obstack.h): Do not include.
	(util_obstack, util_firstobj): Do not declare.
	(build_v2_ivar_list_initializer): Updated call to
	encode_field_decl.
	* objc-runtime-shared-support.c (obstack.h): Do not include.
	(util_obstack, util_firstobj): Do not declare.
	(build_ivar_list_initializer): Updated call to encode_field_decl.
	* objc-act.c (objc_init): Use objc_encoding_init.
	* Make-lang.in (objc/objc-runtime-shared-support.o): Do not depend
	on OBSTACK_H.
	(objc/objc-gnu-runtime-abi-01.o): Likewise.
	(objc/objc-next-runtime-abi-01.o): Likewise.
	(objc/objc-next-runtime-abi-02.o): Likewise.
	(objc/objc-act.o): Likewise.
	
2011-07-04  Nicola Pero  <nicola.pero@meta-innovation.com>

	Refactored encoding code into objc-encoding.h and objc-encoding.c.
	* objc-act.c (util_obstack, util_firstobj, encode_type_qualifiers,
	encode_type, generating_instance_variables, objc_method_parm_type,
	objc_encoded_type_size, encode_method_prototype,
	objc_build_encode_expr, pointee_is_readonly, encode_pointer,
	encode_array, encode_vector, encode_aggregate_fields,
	encode_aggregate_within, encode_next_bitfield,
	encode_gnu_bitfield, encode_field_decl,
	objc_v2_encode_property_attr): Moved to objc-encoding.h and
	objc-encoding.c.  No change in the actual code.
	Include objc-encoding.h.
	(objc_init): Added TODO.
	(objc_build_property_setter_name): Made non-static so it can be
	called from objc-encoding.c.
	* objc-act.h (OBJC_ENCODE_INLINE_DEFS,
	OBJC_ENCODE_DONT_INLINE_DEFS): Moved to objc-encoding.h.
	* objc-runtime-shared-support.h (objc_v2_encode_property_attr,
	encode_method_prototype, encode_field_decl,
	generating_instance_variables): Moved to objc-encoding.h.	
	(objc_build_property_setter_name): Declare.
	* objc-encoding.c: New.
	* objc-encoding.h: New.
	* objc-gnu-runtime-abi-01.c: Include objc-encoding.h.
	* objc-next-runtime-abi-01.c: Likewise.
	* objc-next-runtime-abi-02.c: Likewise.	
	* objc-runtime-shared-support.c: Likewise.
	* Make-lang.in (OBJC_OBJS): Added objc-encoding.o.
	(objc/objc-lang.o): Reordered dependencies.
	(objc/objc-runtime-shared-support.o): Reordered dependencies.
	Added dependencies on objc-encoding.h and on $(GGC_H),
	$(DIAGNOSTIC_CORE_H), $(FLAGS_H) and input.h.
	(objc/objc-gnu-runtime-abi-01.o): Likewise.
	(objc/objc-next-runtime-abi-01.o): Likewise.
	(objc/objc-next-runtime-abi-02.o): Likewise.
	(objc/objc-act.o): Reordered dependencies.  Added dependency on
	objc-encoding.h.
	(objc/objc-encoding.o): New rule.

	* objc-encoding.c (encode_type): Use "%<%T%>" format when printing
	warning "unknown type %<%T%> found during Objective-C encoding"
	instead of using gen_type_name.
	
2011-06-05  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (receiver_is_class_object): Expanded comment.
	(objc_finish_message_expr): Likewise.

2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/48539
	* objc-act.c (objc_finish_message_expr): Warn if messaging a class
	that was only declared using @class without an @interface.  Warn
	if messaging an instance of a class that was only declared using
	@class without an @interface, unless the receiver was also typed
	with a protocol list.

2011-06-01  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_decl_method_attributes): Implement nonnull
	attribute for Objective-C methods.

2011-05-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	* config-lang.in (gtfiles): Updated order of files to fix building
	when the gcc/cp directory is missing, as in the case of some
	release tarballs.

2011-05-20  Nathan Froyd  <froydnj@codesourcery.com>

	* objc-act.c (objc_compare_types): Use function_args_iterator
	instead of TYPE_ARG_TYPES to compare function argument types.

2011-05-13  Toon Moene  <toon@moene.org>

	* objc-next-runtime-abi-02.c (newabi_append_ro):
	Add const qualifier to constant variable pointer declaration.

2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>

	* objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Use proper accessors.
	(CLASS_NST_METHODS, CLASS_CLS_METHODS): Likewise.
	(PROTOCOL_NAME, PROTOCOL_NST_METHODS, PROTOCOL_CLS_METHODS): Likewise.

2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>

	* objc-runtime-shared-support.h (get_arg_type_list): Delete.
	(build_function_type_for_method): Declare.
	* objc-runtime-hooks.h (struct _objc_runtime_hooks_r): Change
	type of get_arg_type_base_list field.
	* objc-act.h (OBJC_VOID_AT_END): Delete.
	* objc-act.c (get_arg_type_list): Delete.
	(build_function_type_for_method): New function.
	(objc_decl_method_attributes): Call build_function_type_for_method.
	(really_start_method): Likewise.
	* objc-gnu-runtime-abi-01.c
	(gnu_runtime_abi_01_get_type_arg_list_base): Change prototype and
	adjust function accordingly.  Update header comment.
	(build_objc_method_call): Call build_function_type_for_method.
	* objc-next-runtime-abi-01.c
	(next_runtime_abi_01_get_type_arg_list_base): Change prototype and
	adjust function accordingly.  Update header comment.
	(build_objc_method_call): Call build_function_type_for_method.
	* objc-next-runtime-abi-02.c
	(next_runtime_abi_02_get_type_arg_list_base): Change prototype and
	adjust function accordingly.  Update header comment.
	(objc_copy_to_temp_side_effect_params): Take fntype instead of a
	typelist.  Use function_args_iterator for traversing fntype.
	(build_v2_build_objc_method_call): Adjust call to it.
	Call build_function_type_for_method

2011-05-05  Joseph Myers  <joseph@codesourcery.com>

	* objc-act.c (objc_start_method_definition): Add parameter expr.
	Update call to start_method_def.
	(objc_generate_cxx_ctor_or_dtor, objc_synthesize_getter,
	objc_synthesize_setter) Update calls to
	objc_start_method_definition.
	(objc_get_parm_info): Add parameter expr.  Update call to
	get_parm_info.
	(start_method_def): Add parameter expr.  Update call to
	objc_get_parm_info.
	* objc-gnu-runtime-abi-01.c (build_module_initializer_routine):
	Update call to objc_get_parm_info.
	* objc-runtime-shared-support.h (objc_get_parm_info): Add extra
	parameter.

2011-04-26  Jason Merrill  <jason@redhat.com>

	* objc-act.c (objc_fold_objc_type_ref): Remove.
	* objc-act.h: Remove prototype.

2011-04-21  Nathan Froyd  <froydnj@codesourcery.com>

	* objc-act.c (synth_module_prologue): Call build_function_type_list
	instead of build_function_type.
	* objc-next-runtime-abi-02.c (next_runtime_02_initialize):
	Likewise.

2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (ivar_of_class): New.
	(objc_is_public): Use ivar_of_class.

2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_get_interface_ivars): Removed.
	(objc_detect_field_duplicates): New.
	(hash_instance_variable): New.
	(eq_instance_variable): New.

2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_declare_protocols): Renamed to
	objc_declare_protocol.  Changed first argument to be an identifier
	instead of a tree chain of identifiers, so that callers don't have
	to create a temporary tree chain.

2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_declare_class): Changed to take a single
	identifier as argument instead of a tree list.  This means callers
	don't have to build temporary tree lists to call this function.
	(synth_module_prologue): Updated calls to objc_declare_class.

2011-04-13  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (build_keyword_selector): Use get_identifier_with_length
	instead of get_identifier.

2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>

	* objc-lang.c (objc_init_ts): Move code for this function...
	* objc-act.c (objc_common_init_ts): ...here. Define.
	* objc-act.h (objc_common_init_ts): Declare.

2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_message_expr): Accept two arguments
	instead of one so that callers can simply pass the arguments
	without having to create a temporary chain to hold them.

2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (comp_proto_with_proto): Do not create and use
	inefficient temporary argument lists.  Compare the arguments
	directly.  (match_proto_with_proto): Removed; incorporated into
	comp_proto_with_proto ().

2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (printable_ivar_name): New.
	(add_instance_variable): Call printable_ivar_name() when an error
	message needs to be printed.  Do not prepare the instance variable
	for printing unless there is an actual error.

2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_is_class_name, objc_is_id): For efficiency,
	avoid calling identifier_global_value() multiple times.

2011-04-12  Martin Jambor  <mjambor@suse.cz>

	* objc-act.c (mark_referenced_methods): Call cgraph_get_create_node
	instead of cgraph_node.

2011-04-06  Joseph Myers  <joseph@codesourcery.com>

	* objc-act.c: Include c-target.h instead of target.h.
	* Make-lang.in (objc/objc-act.o): Update dependencies.

2011-03-06  Joseph Myers  <joseph@codesourcery.com>

	* lang-specs.h: Match -save-temps* instead of -save-temps.

2011-02-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_v2_encode_prop_attr): Rewritten.

2011-02-23  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (build_private_template): Do not copy the
	CLASS_HAS_EXCEPTION_ATTR from the class to the struct.
	* objc-act.h (CLASS_HAS_EXCEPTION_ATTR): Define using
	TYPE_LANG_SLOT_0.

2011-02-22  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47832
	* objc-act.c (flexible_array_type_p): New.
	(add_instance_variable): Produce an error if an instance variable
	uses flexible array members.
	(encode_array): Do not emit an error if encoding a flexible array
	type while generating instance variables.

2011-02-21  Mike Stump  <mikestump@comcast.net>

	* Make-lang.in (check_objc_parallelize): Refine for 4 processor
	machines.

2011-02-20  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-gnu-runtime-abi-01.c (TARGET_64BIT): Removed.  Removed
	usage of padding fields.  Do not include tm.h.
	* objc-act.c (objc_write_global_declaration): Set input_location
	to BUILTINS_LOCATION while generating runtime metadata.

2011-01-20  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47784
	* objc-act.c (objc_maybe_build_modify_expr): If 'rhs' has side
	effects, do not use a temporary variable.

2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-next-runtime-abi-01.c: Updated comments.
	* objc-next-runtime-abi-02.c: Same.

2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_init, generate_struct_by_value_array): Updated
	comments.

2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c: Updated comments.
	* objc-next-runtime-abi-02.c: Same.
	* objc-runtime-shared-support.c: Same.
	* objc-runtime-hooks.h: Same.
	* objc-act.h: Same.
	* objc-gnu-runtime-abi-01.c: Same.

2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-gnu-runtime-abi-01.c (objc_generate_v1_gnu_metadata): Do
	not generate metadata if there is nothing to put into it.

2011-02-17  Iain Sandoe  <iains@gcc.gnu.org>

	* config-lang.in (gtfiles): Updated.
	* Make-lang.in (START_HDRS): New.
	(OBJC_OBJS): Added new object files.
	(objc/objc-act.o): Updated prerequisites.
	(objc/objc-lang.o): Updated prerequisites.
	(objc/objc-runtime-shared-support.o): New.
	(objc/objc-gnu-runtime-abi-01.o): New.
	(objc/objc-next-runtime-abi-01.o): New.
	(objc/objc-next-runtime-abi-02.o): New.
	* objc-runtime-hooks.h: New.
	* objc-runtime-shared-support.h: New.
	* objc-runtime-shared-support.c: New.
	* objc-gnu-runtime-abi-01.c: New.
	* objc-next-metadata-tags.h: New.
	* objc-next-runtime-abi-01.c: New.
	* objc-next-runtime-abi-02.c: New.
	* objc-lang.c: Include c-lang.h.
	(LANG_HOOKS_EH_PERSONALITY): Removed.
	* objc-act.h: Moved many declarations and code from objc-act.c
	into objc-act.h to make them available outside objc-act.c.
	(objc_eh_runtime_type): Removed.
	(objc_eh_personality): Removed.
	(CLASS_HAS_EXCEPTION_ATTR): New.
	(OCTI_SUPER_SUPERFIELD_ID): New.
	(OCTI_V1_PROP_LIST_TEMPL): New.
	(OCTI_V1_PROP_NAME_ATTR_CHAIN): New.
	(super_superclassfield_id): New.
	(objc_prop_list_ptr): New.
	(prop_names_attr_chain): New.
	* objc-act.c: Include new runtime headers.  Moved many #defines
	and declarations into objc-act.h and
	objc-runtime-shared-support.h.  Made some corresponding functions
	non-static, and moved some others into
	objc-runtime-shared-support.c.  Moved metadata generation code
	into the new runtime hook files.
	(ivar_offset_hash_list): New.
	(objc_init): Call generate_struct_value_by_array() before doing
	any runtime initialization.  Create the appropriate runtime hook
	structures.
	(init_objc): Removed.  Code moved directly into objc_init.
	(finish_objc): Removed.  Code moved directly into
	objc_write_global_declarations.
	(objc_write_global_declarations): Do the warn_selector checks
	before emitting metadata.  Use a runtime hook to emit the
	metadata.  Do not emit the metadata or do -gen-decls processing if
	-fsyntax-only or we are producing a PCH.
	(build_objc_exception_stuff): Renamed to
	build_common_objc_exception_stuff.  Remove TREE_NOTHROW flag from
	objc_exception_throw_decl.
	(synth_module_prologue): Call runtime initialize hook instead of
	building runtime declarations here.  Use the
	default_constant_string_class_name runtime hook to set the
	constant string class name.
	(objc_build_string_object): Call the setup_const_string_class_decl
	runtime hook instead of setup_string_decl.  Call the
	build_const_string_constructor runtime hook instead of building
	the string object here.
	(get_objc_string_decl): Added prop_names_attr case.  Removed
	gcc_unreachable() at the end.
	(objc_begin_catch_clause): Distinguish between @catch (...) and
	@catch (id x).  Call the begin_catch runtime hook instead of
	building the CATCH_EXPR here.
	(objc_finish_catch_clause): Call the finish_catch runtime hook
	instead of adding the catch here.
	(objc_finish_try_stmt): Call the finish_try_stmt runtime hook
	instead of doing it here.
	(objc_build_throw_stmt): Bail out early for error_mark_node.  Call
	the build_exc_ptr runtime hook instead of objc_build_exc_ptr.
	Call the build_throw_stmt runtime hook instead of building the
	throw call here.
	(objc_generate_cxx_cdtors): Set has_cxx_cdtors for the GNU runtime
	as well.
	(get_arg_type_list): Call the get_arg_type_list_base runtime hook
	instead of building the list of arguments here.
	(receiver_is_class_object): Call the receiver_is_class_object
	runtime hook instead of doing the check here.  Call the
	tag_getclass runtime hook instead of using TAG_GETCLASS.
	(objc_finish_message_expr): Call the build_objc_method_call
	runtime hook.
	(objc_build_protocol_expr): Call the get_protocol_reference
	runtime hook.
	(objc_build_selector_expr): Call the build_selector_reference
	runtime hook.
	(build_ivar_reference): Call the build_ivar_reference runtime
	hook.
	(hash_init): Set up ivar_offset_hash_list.
	(start_class): Recognize the objc_exception attribute and store
	it.
	(continue_class): Use the class_decl and metaclass_decl runtime
	hooks.
	(build_objc_property_accessor_helpers): Renamed to
	build_common_objc_property_accessor_helpers.  Do not build
	objc_copyStruct_decl, objc_getPropertyStruct_decl and
	objc_setPropertyStruct_decl.
	(objc_synthesize_getter): Check what struct setter/getter helper
	is available instead of checking the type of runtime.
	(get_super_receiver): Use the super_superclassfield_ident runtime
	hook.  Added assert.  Use the get_class_super_ref and
	get_category_super_ref runtime hooks.
	(objc_v2_encode_prop_attr): New.

2011-01-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47314
	* objc-act.c (finish_objc): When calling check_duplicates to check
	duplicated instance methods, set 'is_class' to 0, not 1.

2011-01-14  Ben Elliston  <bje@au.ibm.com>

	PR 19162
	* objc-act.c (generate_struct_by_value_array): Do not output a
	definition for struct_forward_array.

2011-01-08  Iain Sandoe  <iains@gcc.gnu.org>

	* objc-act.c (objc_finish_foreach_loop): Mark collection expression
	as read.

2011-01-02  H.J. Lu  <hongjiu.lu@intel.com>

	* objc-act.c (check_that_protocol_is_defined): Fix a typo.

2011-01-02  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (check_that_protocol_is_defined): New.
	(lookup_protocol): Call check_that_protocol_is_defined.

2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_types_are_equivalent): Fixed comparing protocol
	lists.  Check them two-ways to fix comparisons when one protocol
	implements the other one, or when one list contains duplicated
	protocols.

2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_method): When emitting an error because a
	method with the same name but conflicting types is found in the
	same class or category interface, print a note with the location
	of the original method.  Also, improved the error message to
	clearly state that the conflict is due to conflicting types, and
	produce it for protocols as well.  Emit an error if two identical
	methods are declared in a protocol, but one is @required and the
	other one is @optional.

2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (start_class): Warn when a class attribute is
	ignored.
	(objc_declare_protocols): Warn when a protocol attribute in a
	protocol forward-declaration is ignored.
	(start_protocol): Warn when a protocol attribute is ignored.

2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_set_method_opt): Tidy up error messages.  In
	particular, explicitly mention whether the error is due to the
	@optional or @required keyword instead of mentioning
	"@optional/@required".

2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47118
	* objc-act.c (objc_build_synchronized): Check the argument of
	@synchronized and emit an appropriate error if it is not a valid
	Objective-C object.  Deal gracefully with that case.  Updated
	comments and variable names.

2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47075
	* objc-act.h (PROPERTY_REF_DEPRECATED_GETTER): New.
	* objc-tree.def (PROPERTY_REF): Increased the number of operands
	from 3 to 4.
	* objc-act.c (objc_finish_message_expr): Added optional argument
	allowing to return the deprecated method prototype for deprecated
	methods, instead of immediately emitting the deprecation warning.
	(objc_maybe_build_component_ref): Do not warn for a deprecated
	property.  When building the getter call, get the deprecated
	method prototype from objc_finish_message_expr() and put it into
	the PROPERTY_REF.
	(objc_build_class_component_ref): Same change.
	(finish_class): Mark the getter and setter as deprecated if they
	are generated from a deprecated property.
	(objc_gimplify_property_ref): If the getter is deprecated, emit a
	deprecation warning.
	(objc_build_setter_call, objc_build_message_expr,
	objc_finish_foreach_loop): Updated call to
	objc_finish_message_expr.

2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47076
	* objc-act.c (lookup_protocol): Added 'definition_required'
	argument.  If 'definition_required', and the protocol is not
	defined, emit a warning.
	(objc_declare_protocols): Updated call to lookup_protocol.
	(start_protocol): Same change.
	(check_protocol_recursively): Same change.
	(objc_build_protocol_expr): Same change.
	(lookup_and_install_protocols): Added definition_required argument.
	Pass it to lookup_protocol.
	(objc_get_protocol_qualified_type): Updated call to
	lookup_and_install_protocols.
	(start_class): Updated calls to lookup_and_install_protocols; pass
	true to 'definition_required' to get the warnings.
	(start_protocol): Updated calls to lookup_and_install_protocols.

2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_start_category_interface): Produce an error if
	a class extension is found after the class @implementation.

2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/47073
	* objc-act.c (encode_method_prototype): Fixed both location and
	format string of error "type %qT does not have a known size".

2010-12-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* config-lang.in (gtfiles): Added c-family/c-cppbuiltin.c.

2010-12-22  Nathan Froyd  <froydnj@codesourcery.com>

	* objc-act.c (next_sjlj_build_enter_and_setjmp): Use prototype_p.

2010-12-18  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_init): Call using_eh_for_cleanups.
	(objc_init_exceptions): Renamed to objc_maybe_warn_exceptions.  Do
	not call using_eh_for_cleanups.
	(objc_begin_try_stmt): Do not call objc_init_exceptions.
	(objc_build_throw_stmt): Updated call to
	objc_maybe_warn_exceptions.

2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>

	* objc/objc-act.c (objc_eh_personality): Select personality name on
	runtime.
	(objc_init_exceptions): New.
	(objc_begin_try_stmt): Use objc_init_exceptions.
	(objc_build_throw_stmt): Likewise.

2010-12-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_in_class_extension): New.
	(objc_start_category_interface): If -fobjc-std=objc1
	was specified, produce an error if a class extension is used.
	(objc_finish_interface): Reset objc_in_class_extension to false.
	(objc_add_property_declaration): Allow a class extension to extend
	readonly properties in the main @interface to be readwrite.
	(start_class): Added code to deal with class extensions.  In that
	case, return the existing interface after adding any additional
	protocols to it and setting objc_in_class_extension to true.
	(continue_class): If in a class extension, do not generate the
	instance variable template.

2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_throw_stmt): Check that the argument of
	@throw is an object and emit an error if not.

2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_finish_foreach_loop): Use error_at() instead of
	error() when printing an error about the iterating variable or
	collection not being an object.

2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_finish_foreach_loop): Mark the
	object_expression as used.

2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c: Include c-family/c-objc.h.
	* objc-lang.c: Same change.
	* Make-lang.in (objc/objc-act.o): Depend on
	c-family/c-objc.h.
	(objc/objc-lang.o): Same change.
	* config-lang.in (gtfiles): Added c-family/c-objc.h.

2010-12-02  Joseph Myers  <joseph@codesourcery.com>

	* lang-specs.h: Don't handle -ftraditional.

2010-12-02  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_throw_stmt): Return error_mark_node and
	not NULL_TREE when a @throw is used outside of a @catch block.

2010-11-30  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_volatilized_type): Removed.
	(objc_non_volatilized_type): Removed.
	(objc_type_quals_match): Removed.
	(local_variables_to_volatilize): New.
	(objc_volatilize_decl): Add the decl to volatilize to
	local_variables_to_volatilize, but don't volatilize it yet.
	(objc_finish_function): New.
	* objc-act.h (local_variables_to_volatilize): New.

2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
	    Mike Stump  <mikestump@comcast.net>

	Allow 'make check-objc -j2'
	* Make-lang.in (lang_checks_parallelized): New.
	(check_objc_parallelize): New.

2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (start_class): When a class is reimplemented,
	generate an error and avoid adding the class to the list of
	implemented classes again, but do not return error_mark_node.

2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_maybe_build_component_ref): Removed TODO.

2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_eh_runtime_type): Avoid ICE if error_mark_node
	is passed as argument.
	(objc_begin_catch_clause): Added code to deal with an
	error_mark_node or NULL_TREE argument.  Improved checks for
	invalid arguments.  Added code to traverse typedefs.

2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_demangle): Return immediately if the string is
	too short.  Detect names that do not need demangling, and return
	them unchanged.

2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented optional properties.
	* objc-act.h (PROPERTY_OPTIONAL): New.
	* objc-act.c (objc_add_property_declaration): Set
	PROPERTY_OPTIONAL if appropriate.
	(finish_class): When generating definitions of setter and getter
	methods associated with a property for a protocol, mark them as
	optional if the property is optional.
	(maybe_make_artificial_property_decl): Added 'getter_name'
	argument.  Set PROPERTY_OPTIONAL.
	(objc_maybe_build_component_ref): Updated calls to
	maybe_make_artificial_property_decl.  Added code for optional,
	readonly properties.
	(objc_build_class_component_ref): Updated call to
	maybe_make_artificial_property_decl.

2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_struct): Fixed loops that save and
	restore TYPE_OBJC_INFO to iterate over all variants of the type; a
	special case for the current type is then no longer required.
	Duplicate TYPE_LANG_SPECIFIC for each type before restoring
	TYPE_OBJC_INFO.
	(objc_get_protocol_qualified_type): Updated comments.

2010-11-25  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_struct): Install TYPE_OBJC_INTERFACE
	after finish_struct, not before, otherwise it may be wiped out by
	it.  This fixes spurious warnings when a class has more than 15
	instance variables.

2010-11-23  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/24358
	* lang-specs.h: Added objective-c-cpp-output.  Mapped .mi to
	objective-c-cpp-output instead of objc-cpp-output.  Print a
	deprecation note every time objc-cpp-output is requested.

2010-11-22  Joseph Myers  <joseph@codesourcery.com>

	* objc-act.c (write_symbols): Don't declare here.

2010-11-22  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR objc/41108
	* objc-act.c (objc_generate_write_barrier): Added assert to make sure
	this function is only called with the next runtime.

2010-11-20  Jakub Jelinek  <jakub@redhat.com>

	PR c/46547
	* objc-act.c (in_late_binary_op): Remove.

2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_start_class_interface): Do not warn that class
	attributes are unimplemented.  Pass the attributes to start_class.
	(objc_start_category_interface): Updated call to start_class.
	(objc_start_class_implementation): Same change.
	(objc_start_category_implementation): Same change.
	(objc_build_class_component_ref): Warn if the class is deprecated.
	(build_private_template): Mark the template as deprecated if the
	class is deprecated.
	(start_class): Added 'attributes' argument.  Emit a warning if
	using a deprecated class as superclass of a class, or original
	class of a category.  Recognize the 'deprecated' attribute when
	starting and interface, and mark the interface with
	TREE_DEPRECATED if present.  Store attributes in the interface.

2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (lookup_protocol): Added 'warn_if_deprecated'
	argument.  If it is 'true' and the protocol is deprecated, emit a
	deprecation warning.
	(objc_start_protocol): Do not warn that protocol attributes are
	unimplemented.  Pass the attributes to start_protocol.
	(start_protocol): Added attributes argument.  Recognize the
	'deprecated' attribute and mark the protocols with TREE_DEPRECATED
	if present.  Store attributes in the protocol.
	(objc_declare_protocols): Added 'attributes' argument.  Recognize
	the 'deprecated' attribute and mark the protocols with
	TREE_DEPRECATED if present.  Store attributes in the protocol.
	Updated call to lookup_protocol.
	(objc_build_protocol_expr): Updated call to lookup_protocol.
	(check_protocol_recursively): Same change.
	(lookup_and_install_protocols): Same change.
	* objc-act.h: Updated comments.

2010-11-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (lookup_method_in_protocol_list): Search methods in
	PROTOCOL_OPTIONAL_CLS_METHODS / PROTOCOL_OPTIONAL_NST_METHODS if
	they are not found in PROTOCOL_CLS_METHODS / PROTOCOL_NST_METHODS.

2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_setter_call): New.
	(objc_maybe_build_modify_expr): Rewritten to build a compound
	statement.
	(objc_build_incr_expr_for_property_ref): Updated calls to
	objc_maybe_build_modify_expr to call objc_build_setter_call
	instead.  Use build_modify_expr () instead of build2 (MODIFY_EXPR,
	...).  Use convert () instead of build1 (NOP_EXPR, ...).  Use
	TREE_NO_WARNING on the final compound statement to silence C++
	warnings.

2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_incr_expr_for_property_ref): New.
	(objc_create_temporary_var): Moved it towards the beginning of the
	file so that objc_build_incr_expr_for_property_ref can use it.

2010-11-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_property_declaration): Check that the decl
	we received from the parser is a FIELD_DECL; reject array and
	bitfield properties.  Convert the warning when a property is
	readonly and a setter is specified into an error.  Convert errors
	when a property declaration does not match a property declaration
	in a superclass into warnings.
	(objc_add_synthesize_declaration_for_property): Use
	DECL_BIT_FIELD_TYPE to determine the type of an instance variable
	if it is a bitfield.  Throw an error if we are asked to synthesize
	setters/getters for a bitfield instance variable but the property
	is not appropriate - it must be assign and nonatomic.  If the
	property is readonly, allow the instance variable type to be a
	specialization of the property type.
	(objc_type_valid_for_messaging): Fixed returning 'false' for a
	Class qualified with a protocol when the 'accept_classes' argument
	is 'false'.

2010-11-13  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_get_protocol_qualified_type): detect cases
	where we are asked to attach a protocol to something which is not
	an Objective-C object type, and produce an error.

2010-11-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_property_declaration): Check that the type
	of a property and of an inherited property match.
	(objc_maybe_build_component_ref): Tidied up indentation and
	comments.
	(objc_common_type): Added new type of check (-5).
	(objc_add_synthesize_declaration_for_property): Check that the
	property to synthesize and the instance variable to use have the
	same type.

2010-11-10  Joseph Myers  <joseph@codesourcery.com>

	* objc-act.c (objc_init): Use %' in diagnostic.
	(objc_set_method_opt): Remove trailing '.' from diagnostic.

2010-11-10  Joseph Myers  <joseph@codesourcery.com>

	* objc-act.c (dump_base_name): Don't declare here.

2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_dynamic_declaration_for_property): Do not
	search for the @property declation only in the current context,
	but also in inherited properties.  Do not mark the original
	PROPERTY_DECL in the @interface or @protocol with
	PROPERTY_DYNAMIC.
	(check_methods): To check if a method is associated with a
	@dynamic property, search for the property in IMPL_PROPERTY_DECL.
	(check_accessible_methods): Same change.
	* objc-act.h: Updated comment.

2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_synthesize_declaration_for_property):
	Iterate over IMPL_PROPERTY_DECL, not CLASS_PROPERTY_DECL, when
	checking for an existing @synthesize or @dynamic declaration.
	Search for an inherited @property declaration if none is found in
	the local interface.  If the required instance variable does not
	exist, return instead of trying to continue to prevent a compiler
	crash later.  Check that the instance variable is not already
	being used by another @synthesize.
	(objc_add_dynamic_declaration_for_property): Iterate over
	IMPL_PROPERTY_DECL, not CLASS_PROPERTY_DECL, when checking for an
	existing @synthesize or @dynamic declaration.
	(objc_synthesize_getter): Search for the getter declaration in
	protocols and superclasses as well.
	(objc_synthesize_setter): Search for the setter declaration in
	protocols and superclasses as well.

2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (lookup_property): When checking categories, also
	check the protocols attached to each.
	(objc_add_property_declaration): Determine the
	PROPERTY_SETTER_NAME and PROPERTY_GETTER_NAME here.  Tidied up
	error message.  Search for an existing property declaration with
	the same name which would be inherited from the class hiearchy,
	and produce an error if it has incompatible attributes.
	(check_methods): Changed second parameter.  If the method is a
	getter or setter for a property, do not warn if it is inherited as
	opposed to implemented directly in the class.
	(check_protocol): Updated calls to check_methods.
	(finish_class): Do not determine the PROPERTY_SETTER_NAME and
	PROPERTY_GETTER_NAME here; this is now done earlier, in
	objc_add_property_declaration.
	* objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Added comments.

2010-11-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	Fixed using the Objective-C 2.0 dot-syntax with self and super.
	* objc-act.c (OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS): New.
	(maybe_make_artificial_property_decl): Added 'implementation'
	argument.  Use OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS when
	looking up getters or setters for a class.  If an implementation
	is specified, search it as well for a getter or setter.
	(objc_maybe_build_component_ref): Updated calls to
	maybe_make_artificial_property_decl; added code to deal with
	'self' and 'super' and with methods declared locally in the
	implementation.  Store the getter call expression in the
	PROPERTY_REF instead of throwing it away.
	(objc_build_class_component_ref): Updated calls to
	maybe_make_artificial_property_decl, and store the getter call
	expression in PROPERTY_REF instead of throwing it away.
	(lookup_method_static): Implemented
	OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS option.
	(objc_gimplify_property_ref): Do not build the getter method call
	here; instead use the one stored in the PROPERTY_REF.  If it's not
	there, produce helpful error messages.
	* objc-tree.def (PROPERTY_REF): Increased the number of operands
	from 2 to 3.  Updated comments.
	* objc-act.h (PROPERTY_REF_GETTER_CALL): New.

2010-11-06  Iain Sandoe  <iains@gcc.gnu.org>

	PR target/44981
	* objc-act.c (objc_build_string_object): Amend for renamed hook.
	(objc_string_ref_type_p): New.
	(objc_check_format_arg): New.

2010-11-04  Nicola Pero  <nicola.pero@meta-innovation.com>

	Fixed using the Objective-C 2.0 dot-syntax with class names.
	* objc-act.c (objc_build_class_component_ref): New.

2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_dynamic_declaration): Allow @dynamic in a
	category.
	(objc_type_valid_for_messaging): Added 'accept_classes' argument;
	if set to 'true', return 'true' for Class objects.  Do not remove
	more than on pointer indirection.
	(objc_add_property_declaration): Only warn about 'assign'
	semantics for Objective-C objects if warn_property_assign_default;
	and do not warn if the property is readonly or if the type is a Class.
	(objc_finish_foreach_loop): Updated calls to
	objc_type_valid_for_messaging.

2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented -fobjc-std=objc1 flag.
	* objc-act.c (objc_start_class_interface): If attributes are
	specified when flag_objc1_only is set, print an error.
	(objc_start_category_interface): Same change.
