2011-10-26  Release Manager

	* GCC 4.6.2 released.

2011-06-27  Release Manager

	* GCC 4.6.1 released.

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

	Backport from mainline
	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-03-25  Release Manager

	* GCC 4.6.0 released.

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.
	(objc_start_protocol): Same change.
	(objc_add_method_declaration): Same change.
	(objc_start_method_definition): Same change.
	(objc_build_keyword_decl): Same change.
	(objc_set_visibility): If OBJC_IVAR_VIS_PACKAGE is used when
	flag_objc1_set is set, print an error.
	(objc_set_method_opt): If flag_objc1_only is set, print an error.
	(objc_add_property_declaration): Same change.
	(objc_add_synthesize_declaration): Same change.
	(objc_add_dynamic_declaration): Same change.
	(objc_finish_foreach_loop): Same change.
	(objc_maybe_build_component_ref): If flag_objc1_only is set,
	return immediately.

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

	* objc-act.c (maybe_make_artificial_property_decl): New.
	(objc_maybe_build_component_ref): Call
	maybe_make_artificial_property_decl if a property can not be
	found.  Do not call objc_finish_message_expr if
	PROPERTY_HAS_NO_GETTER.
	* objc-act.h Updated comments.
	(PROPERTY_HAS_NO_GETTER): New.
	(PROPERTY_HAS_NO_SETTER): New.
	* objc-tree.def: Updated comment.
	
2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented format and noreturn attributes for Objective-C methods.
	* objc-act.c (objc_start_method_definition): If method attributes
	are specified emit a warning and ignore them.
	(build_objc_method_call): Moved deprecation warnings from here ...
	(objc_finish_message_expr): to here.  Do not emit deprecation
	warnings if the receiver is of type 'id'.
	(really_start_method): Install 'deprecation' and 'noreturn'
	attributes.
	(objc_decl_method_attributes): Carefully filter out the list of
	attributes, allowing only "noreturn", "format", "sentinel" and
	"deprecated".  In the case of "format", adjust the arguments.
	Always process the attributes in the same way no matter if
	"sentinel" is in the list or not.
	
2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_maybe_build_component_ref): Warn about using
	deprecated properties.
	(objc_maybe_printable_name): Support PROPERTY_DECL.
	
2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented Objective-C 2.0 property accessors.	
	* objc-act.h (enum objc_tree_index): Added OCTI_GET_PROPERTY_DECL,
	OCTI_SET_PROPERTY_DECL, OCTI_COPY_STRUCT_DECL,
	OCTI_GET_PROPERTY_STRUCT_DECL and OCTI_SET_PROPERTY_STRUCT_DECL.
	(objc_getProperty_decl): New.
	(objc_setProperty_decl): New.
	(objc_copyStruct_decl): New.
	(objc_getPropertyStruct_decl): New.
	(objc_setPropertyStruct_decl): New.
	* objc-act.c (build_objc_property_accessor_helpers): New.
	(synth_module_prologue): Call
	build_objc_property_accessor_helpers.
	(lookup_ivar): New.
	(objc_synthesize_getter): Implemented synthesizing getters that
	work with properties that are not nonatomic, assign properties.
	(objc_synthesize_setter): Implemented synthesizing setters that
	work with properties that are not nonatomic, assign properties.
	
2010-10-30  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented Objective-C 2.0 @property, @synthesize and @dynamic.
	* objc-tree.def (PROPERTY_REF): New.
	* objc-act.h: Added comments for all the PROPERTY_ macros.
	(PROPERTY_NAME): Use DECL_NAME.
	(PROPERTY_COPIES): Removed.
	(PROPERTY_READONLY): Use DECL_LANG_FLAG_0 for it.
	(PROPERTY_NONATOMIC): New.
	(objc_property_assign_semantics): Make it a typedef.
	(PROPERTY_ASSIGN_SEMANTICS): New.
	(PROPERTY_DYNAMIC): New.
	(PROPERTY_REF_OBJECT): New.
	(PROPERTY_REF_PROPERTY_DECL): New.
	* objc-act.c (CALL_EXPR_OBJC_PROPERTY_GETTER): Removed.
	(in_objc_property_setter_name_context): Removed.
	(objc_add_property_declaration): Removed copies and ivar arguments
	and code supporting them.  Fixed recovering when readonly and
	setter attributes are specified.  Removed support for @property in
	@implementation context.  Updated error message.  Double-check
	that a property does not have a DECL_INITIAL.  Validate the
	property assign semantics and emit appropriate errors and
	warnings.  Check for duplicate property declarations.  Set
	DECL_SOURCE_LOCATION, TREE_DEPRECATED, PROPERTY_NONATOMIC,
	PROPERTY_ASSIGN_SEMANTICS and PROPERTY_DYNAMIC of the new
	PROPERTY_DECL.  Do not set PROPERTY_COPIES.  Set
	PROPERTY_IVAR_NAME to NULL_TREE.
	(objc_build_getter_call): Renamed to
	objc_maybe_build_component_ref.  If the property is not found in
	the interface, search in the protocol list.  Do not generate the
	getter call; instead, build and return a PROPERTY_REF.
	(objc_is_property_ref): New.
	(objc_setter_func_call): Removed.
	(get_selector_from_reference): Removed.
	(is_property): Removed.
	(objc_build_setter_call): Renamed to objc_maybe_build_modify_expr.
	Updated to work on a PROPERTY_REF and use the PROPERTY_DECL from
	the PROPERTY_REF.  Generate an error if the property is read-only.
	(build_property_reference): Removed.
	(objc_finish_message_expr): Removed check to produce "readonly
	property can not be set" error when
	in_objc_property_setter_name_context.  We now generate the error
	earlier, in objc_maybe_build_modify_expr, which will only generate
	the setter call if the property is readwrite.
	(check_methods): Recognize dynamic properties.
	(check_methods_accessible): Same change.
	(objc_build_property_ivar_name): Removed.
	(objc_build_property_setter_name): Dropped bool argument.  Always
	add the ':' at the end.
	(objc_gen_one_property_datum): Removed.
	(objc_process_getter_setter): Removed.
	(objc_synthesize_getter): Mark 'klass' argument as unused.  Use
	PROPERTY_GETTER_NAME instead of PROPERTY_NAME.  Set the
	DECL_SOURCE_LOCATION of the new method to be the same as the one
	for the @synthesize.  Always use PROPERTY_IVAR_NAME as it is
	instead of trying to guess what it should be.  Removed use of
	CLASS_IVARS.  Use the location of @synthesize for c_finish_return
	and c_end_compound_statement.
	(objc_synthesize_setter): Mark 'klass' argument as unused.  Use
	PROPERTY_SETTER_NAME instead of trying to guess what it should be.
	Set the DECL_SOURCE_LOCATION of the new method to be the same as
	the one for the @synthesize.  Always use PROPERTY_IVAR_NAME as it
	is instead of trying to guess what it should be.  Removed use of
	CLASS_IVARS.  Use the location of @synthesize for c_finish_return
	and c_end_compound_statement.  Emit an error and keep going,
	instead of aborting, if the setter prototype does not have the
	expected argument.
	(objc_add_synthesize_declaration_for_property): New.
	(objc_add_synthesize_declaration): Removed ATTRIBUTE_UNUSED from
	all arguments.  Improved error message.  Filled in the rest of the
	function, which used to be a placeholder, with an actual
	implementation.
	(objc_add_dynamic_declaration_for_property): New.
	(objc_add_dynamic_declaration): Removed ATTRIBUTE_UNUSED from all
	arguments.  Improved error message.  Filled in the rest of the
	function, which used to be a placeholder, with an actual
	implementation.
	(objc_gen_property_data): Rewritten.
	(finish_class): Added explicit switch cases for
	CLASS_INTERFACE_TYPE, CATEGORY_INTERFACE_TYPE and
	PROTOCOL_INTERFACE_TYPE.  Added a default switch case which is
	gcc_unreachable.  Rewritten the processing of properties, in
	particular to not synthesize prototypes for getters and setters if
	they already exist and to install the getter and setter names into
	PROPERTY_GETTER_NAME and PROPERTY_SETTER_NAME.  Do not generate
	warnings about setter, getter and ivar property attributes.
	(objc_lookup_ivar): Removed support for properties.
	(objc_gimplify_property_ref): New.
	(objc_gimplify_expr): Use a switch.  In case of a PROPERTY_REF, call
	objc_gimplify_property_ref.
	
2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_property_declaration): Added arguments to
	pass the various property attributes that were parsed with the
	property declaration.  Process arguments to determine the final
	property attributes and produce error messages as appropriate.
	Added temporary code to keep the compiler silent about variables
	set but not used - for new attributes that are only checked but
	have no effect yet.
	(property_readonly): Removed.
	(property_setter): Removed.
	(property_getter): Removed.
	(property_ivar): Removed.
	(property_copies): Removed.	
	(objc_set_property_attr): Removed.
	* objc-act.h (enum property_assign_semantics): New.
	
2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_add_property_variable): Renamed to
	objc_add_property_declaration.  Added location argument.  Updated
	warnings and errors to use it.  Use error, not fatal_error, if a
	property declaration is found outside an interface or
	implementation context.
	
2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (objc_build_keyword_decl): Updated comments.  Do not
	emit a warning that method parameter attributes are unimplemented.
	Instead, store them into DECL_ATTRIBUTES of the KEYWORD_DECL.
	(start_method_def): Copy attributes from each KEYWORD_DECL into
	the corresponding PARM_DECL.
	(objc_warn_deprecated_use): Removed.
	(build_objc_method_call): Call warn_deprecated_use, not
	objc_warn_deprecated_use.
	(objc_maybe_printable_name): Do not try to get the identifier name
	of DECLs that we don't recognize.  Immediately return NULL for them.
	(objc_printable_name): Removed C++-specific case, which is no
	longer used.  Updated comments.
	
2010-10-23  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.c (OBJC_GEN_METHOD_LABEL): Updated comments.
	(objc_demangle): Return NULL if demangling can not be done because
	the string to demangle is not an Objective-C mangled method name.
	Be smarter in demangling method names so that at least for methods
	with no arguments we are able to almost always demangle '_' correctly.
	Updated comments.
	(objc_maybe_printable_name): New.
	(objc_printable_name): Call objc_maybe_printable_name.  If it
	returns NULL, call cxx_printable_name in Objective-C++.

2010-10-21  Iain Sandoe  <iains@gcc.gnu.org>

	Based on the CFString implementation in FSF apple/trunk branch.
	
	* objc/objc-act.c (objc_build_string_object): Handle CFStrings.

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

	* objc-act.c (get_objc_string_decl): Use a switch instead of a
	chain of ifs.  Use gcc_unreachable instead of abort.
	(add_objc_string): Same change.
	(generate_protocol_list): Same change - twice.
	(synth_id_with_class_suffix): Same change.
	(build_keyword_selector): Same change - twice.
	(objc_build_message_expr): Same change.
	(objc_build_selector_expr): Same change.
	(check_methods): Same change - and added missing gcc_unreachable
	for default case.
	(check_methods_accessible): Same change - twice, and added missing
	gcc_unreachable for default case in one of them.
	(start_class): Same change - and added missing gcc_unreachable for
	default case.
	(continue_class): Same change.
	(objc_gen_property_data): Same change.
	(finish_class): Same change.
	(encode_type_qualifiers): Added missing gcc_unreachable.
	(encode_type): Small code tidy up to reduce duplicated code.  Use
	gcc_unreachable instead of abort - twice.
	(encode_gnu_bitfield): Use a switch instead of a chain of ifs -
	twice.  Added missing gcc_unreachable for default case - twice.
	(dump_interface): Use a switch instead of a chain of ifs.
	(handle_impent): Same change.
	
2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-act.h (objc_inherit_code): Removed.
	* objc-act.c (objc_inherit_code): Removed.
	(objc_set_method_type): Removed.
	(objc_build_method_signature): Added is_class_method argument.
	Use it instead of the global objc_inherit_code variable.
	(objc_add_method_declaration): Same change.
	(objc_start_method_definition): Same change.
	(objc_generate_cxx_ctor_or_dtor): Updated call to
	objc_start_method_definition.  Do not call objc_set_method_type.
	(adjust_type_for_id_default): Mark as inline.
	(objc_synthesize_getter): Updated call to
	objc_start_method_definition.  Do not set objc_inherit_code.
	(objc_synthesize_setter): Updated call to
	objc_start_method_definition.  Do not set objc_inherit_code.	
	
2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>

	Merge from 'apple/trunk' branch on FSF servers.  Obvious updates
	to gcc_alloc_xxx calls in hash_init and hash_class_name_enter to
	get it to compile in the current trunk.

	2006-01-27 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4345837
	* objc/objc-act.c (hash_class_name_enter): New.
	(hash_class_name_lookup): New.
	(objc_declare_alias): Enter alias name into hash table.
	(objc_declare_class): Enter class name into hash table.
	(objc_is_class_name): Do a hash look up of class name.
	(hash_init): Initialize the two new hash tables.
	* objc-act.h: Added cls_name_hash_list and als_name_hash_list 
	declarations, removed class_chain and alias_chain.	

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

	* objc-lang.c (finish_file): Removed.
	* objc-act.c (objc_finish_file): Renamed to
	objc_write_global_declarations.  Do not try to instantiate C++
	templates when compiling Objective-C++ as this is now
	automatically done before this function is called.  Do not check
	for syntax-only run or PCH generation as this is done by the
	callers.
	* objc-act.h (objc_finish_file): Removed.
	
2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented parsing @synthesize and @dynamic for
	Objective-C/Objective-C++.
	* objc-act.c (objc_add_synthesize_declaration): New.
	(objc_add_dynamic_declaration): New.

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

	* objc-act.c (lookup_and_install_protocols): Return NULL if passed
	error_mark_node.
	
2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>

	Merge from 'apple/trunk' branch on FSF servers.

	2006-03-10  Fariborz Jahanian <fjahanian@apple.com>

        Radar 4407151
	* objc/objc-act.c (objc_is_class_name): template parameter is not
        an objective class name.
        (objc_generate_cxx_cdtors): Check for the null
        objc_implementation_context.	

