2010-08-26 Fariborz Jahanian <fjahanian@apple.com>

	Radar 8351204
	* objc-act.c (objc_resolve_build_property_setter_name): Issue error
	if receiver type cannot be resolved to a known class type.
	* objc.dg/property-receiver-id-type.m: New

2010-07-10 Fariborz Jahanian <fjahanian@apple.com>

	Radar 8290584
	* objc-act.c (objc_resolve_build_property_setter_name): Lookup
	property name in the receiver's protocol list when it is of
	qualified id type.
	* objc.dg/qualified-id-property.m: New

2010-04-02 Fariborz Jahanian <fjahanian@apple.com>

        Radar 7591784
	* objc-act.c (objc_build_compound_setter_call): Issue unimplemented 
        error attempting to use dot-syntax on a RHS which is c++ object
        requiring construction.

2019-03-17  Jim Grosbach <grosbach@apple.com>

        Radar 6671703
	* objc-act.c (objc_synthesize_new_getter, objc_synthesize_new_setter):
	On ARM, for atomic access to any type of larger than 4 bytes, use
	objc_copyStruct().

2009-05-06  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6083666
	* objc-act.c (objc_build_property_reference_expr): Never
	issue diagnostics on use of an 'ivar' with property type
        mismatch. Issue warning in all other cases and only in 
        legitimate property/user declared type mismatches.
        (objc_build_property_reference_expr): Do not issue any
	warning or error when property is more specialized than
        its user declared accessor. 

2009-04-24  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6825962
	* objc-act.c (objc_declare_property_impl): Issue property in
	super class diagnostic even if explicitly asked for.

2009-04-20 Fariborz Jahanian <fjahanian@apple.com> 
        Radar 6803342
        * objc-act.c (generate_objc_image_info): Set the imfo_info
        flag to 16 (1<<4) when in objc2, setter/getter issues error
        on use of super class synthsized ivar.

2009-01-07  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6379842
	* objc-act.c (objc_add_property_variable): warn on 
	block property with no 'copy' attribute.

2008-11-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6370136
	* objc-act.c (objc_merge_protocol_methods): Merge copied
	list of protocol's methods into class.

2008-11-13  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6351990 (minor tweak).
	* objc-act.c (build_protocol_list_address_table): Move couple
	of variables out of the loop.

2008-11-11  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6351990
	* objc-act.c (build_protocollist_reference_decl): Builds
	a weak visibility hidder symbol for protocol reference
	meta-data symbols.
	(objc_add_to_protocol_list_chain): Takes addition argument
	and builds a tree using this argument.
	(build_protocol_list_address_table): Now builds a list
	of protocol label and address of generated protocol symbol.
	
2008-11-07  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5847976
	* objc-act.c (objc_is_gcable_type): Made global.
	(objc_build_weak_reference_tree): Quick return if
	-fobjc-gc unspecified.
	(objc_checkon_weak_attribute): Ditto.
	(objc_generate_write_barrier): Generate write-barrier for
	a __block variable declared as __weak.
	(retain_block_component, release_block_component,
	 copy_in_object): Removed.
	(cast_to_pointer_to_id): Removed.

2008-10-27  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6231433
	* objc-act.c (objc_compare_types, objc_have_common_type):
	Take an extra argument for better diagnostics.

2008-10-23  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6307941
	* objc-act.c (build_objc_method_call, build_v2_build_objc_method_call,
	get_arg_type_list): Take selector name as new argument.
	(objc_init): Remove check for flag_objc_legacy_dispatch.
	(objc_legacy_dispatched_selector_p): New
	(objc_finish_message_expr): Call objc_legacy_dispatched_selector_p
	to check on legacy dispatch message or objc2 abi.
	
2008-10-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6017984
	* objc-act.c (objc_merge_protocol_methods): New
	(finish_class): Call objc_merge_protocol_methods for
	anonymous categories.

2008-10-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6285794 (tweak)
	* objc-act.c:  Replace all build_int_cst (NULL_TREE, 0)
		       with integer_zero_node.

2008-10-15  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6285794
	* objc-act.c: All 0 initializers are converted to
	pointer type of the initialized field, to suit
	llvm-gcc restriction.

2008-10-13  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6255913
	* objc-act.c (build_protocollist_translation_table): Generate a
	coalessable name for protocol meta-data reference with "l_OBJC" prefix.
	(build_v2_protocol_reference): declare a 'weak' 'extern hidden'
	symbol for protocol meta-data.

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

	Radar 6267049
	* objc-act.c (objc_get_protocol_qualified_type): Issue error on bogus
	protocol qualified syntax.

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

        Radar 6264448
	* objc-act.c (objc_build_compound_setter_call): Do the default conversion 
	on temporary after it is passed to the setter call.

2008-10-01  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6255671
	* objc-act.c (managed_objc_object_pointer): block pointer
	is also an ObjC pointer for property purposes.
	(objc_add_property_variable): Issue hard error when
	property of block pointer type is defaulted to 
	'assign' attribute.

2008-09-23  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6230701
	* objc-act.c (access_block_ref_self_decl): New
	(build_ivar_reference): Call it, instead of inline code.
	(get_super_receiver): Call access_block_ref_self_decl to get
	copied-in version of 'self' when building 'super'
	messaging.

2008-09-19  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6230800
	* objc-act.c (objc_v2_build_ivar_ref): Better text for diagnostic.

2008-09-19  Fariborz Jahanian <fjahanian@apple.com>

        Radar 4900615
	* objc-act.c (encode_type): Encode long double as 'D'.

2008-09-11  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5839123
	* objc-act.c (objc_compare_types): More detailed error
	reporting.

2008-09-10  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6209554
	* objc-act.c (objc_declare_property_impl): Report on 
	location of previous property decl.
	(error_previous_property_decl): New.
	
2008-09-08 Fariborz Jahanian <fjahanian@apple.com>

        Radar 6064186
	* objc_act.c (generate_v2_property_list,
		      forward_declare_categories,
		      generate_descriptor_table,
		      generate_v2_ivars_list,
		      generate_dispatch_table,
		      generate_v2_dispatch_tables,
		      generate_v2_protocol_list,
		      generate_v2_method_descriptors,
		      newabi_append_ro,
		      generate_v2_shared_structures): Symbols which end up in DATA
	section now start with "l_".
	(build_message_reference_decl): Each message ref symbol is now prefixed
	by "l_". It is also becomes 'private extern'.
		       
2008-08-26  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5595325 (minor addition)
	* objc-act.c (objc_finish_message_expr): Do not warn
	on invalid receiver type if receiver is an
	NSObject.

008-08-22  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5595325
	* objc-act.c (objc_nsobject_attribute_type): New
	(objc_compare_types): Allow NSObject pointers to match 'id'
	(objc_is_object_ptr): An SObject pointer is a valid objective-c
	object.
	
2008-08-20  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6157135
	* objc-act.c (objc_delta_format_args): Don't change
	number of first variarg if it is 0.

2008-08-19  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5435299
	* objc-act.c (objc_synthesize_new_getter): Do not call
	objc_lookup_property_ivar with -fnew-property-ivar-synthesis
	(objc_synthesize_new_setter): Ditto.
	(objc_add_internal_ivar): Synthesize an ivar according to
	new rules.
	(lookup_property_impl_in_list): New
	(lookup_ivar_in_property_list): New
	(objc_declare_property_impl): Diagnose a corner case
	of a missing 'ivar'. Synthesize 'ivar' at point
	of @synthesize declaration. Issue more diagnostics.
		
2008-08-19  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5847641
	* objc-act.c (objc_declare_property_impl): Warn if
	undeclared ivar is specified on @synthesize.

2008-08-18  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5424416
	* objc-act.c (objc_start_method_definition): Issue 
	diagnostics on methods returning array or function.

2008-08-18  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5453108
	* objc-act.c (property_method_in_class): New
	(check_methods): Check on method being a property
	method in current class by calling property_method_in_class.

2008-08-14  Dale Johannesen <dalej@apple.com>

        * objc-act.c (build_objc_string_decl):  Rename to
        build_objc_string_ident throughout.  Make it return an
        identifier instead of building a var_decl which gets
        thrown away.
        (add_objc_string):  Modify for interface change.

2008-08-12  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6133042
	* objc-act.c (block_pointer_strong_value): New
	(objc_build_aggregate_ivar_layout): Find GCability of
	block pointer by calling above routine.
	(objc_is_gcable_type): Ditto.

2008-08-05  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6040305 - work in proggress.

	* objc-act.c (build_ivar_reference): treat 'self' as 
	a copied in variable or ObjC++ as well.

2008-07-28  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6049617
	* objc-act.c (objc_finish_message_expr): Check and warn
	on depricated/unavilable methods.
	(build_objc_method_call): Removed above checking code.
	(build_v2_build_objc_method_call): Ditto.

2008-07-25  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6023694
	* objc-act.h: (IS_SUPER) changed to compare
	against the original type.

2008-07-22  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6029577
	* objc-act.c (objc_build_property_reference_expr):
	Added support for property reference tree build when
	property and/or getter is of a reference type.

2008-07-21  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6029624
	* objc-act.c: (objc_declare_property_impl): Consider property
	of reference type as valid.
	(objc_add_internal_ivar): Type of a synthesized ivar
	of a property reference type is its referenced type.

2008-07-18  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6068877
	* objc-act.c: (objc_create_init_utf16_var): Removed.

2008-07-17  Fariborz Jahanian <fjahanian@apple.com>
	Radar 6083530
	* objc-act.c: (objc_build_foreach_components): 'limit' and
	'counter' temporaries must have type unsigned long.

2008-07-08  Fariborz Jahanian <fjahanian@apple.com>

        Radar 6061276
	* objc-act.c (objc_compare_types): Resolve a @class decl.
	in type tree to its @interface decl. if can.

2008-06-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 6003871
	* objc-act.c (objc_build_ivar_layout): Free object after
	its use not before.

2008-06-13  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5996271
	* objc-act.c (encode_type): encode 128-bit int.

2008-06-03  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5982789
	* objc-act.c (buildNSStringType): New
	(objc_build_string_object): Type of a CFString literal is
	now NSString *.
	(objc_check_nsstring_pointer_type): Call buildNSStringType
	to build "NSString" type.

2008-06-03  Fariborz Jahanian <fjahanian@apple.com>
	
	Radar 5887355
	* objc-act.c (objc_build_string_object): Defer tree build
	of cfstrings when in a template declaration.
	(objc-tree.def): OBJC_STRING_REFERENCE is new tree code.
	
2008-05-27  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5962694
	* objc/objc-act.c (finish_class): For categories also merge
	properties from their protocol list.

2008-05-16  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5932809
	* objc-act.c (objc_finish_message_expr) Don't warning on
	[id release] or [id retain] messaging synthesized for byref
	variable blocks.
	(build_ivar_reference): build_closure_ref_decl call takes
	on less argument (this is a clean up).
	(retain_closure_component, release_closure_component): Set
	donot_warn_missing_methods flag so we do not issue warning
	on [id release] or [id retain] messaging synthesis.
	(cast_to_pointer_to_id): New.

2008-04-23  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5882266 (tweaked).
	* objc-act.c (objc_is_strong_p): Previous patch removed.
	(objc_is_gcable_type): Special handling for finding '__weak'
	attribute on block types.
	
2008-04-23  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5882266
	* objc-act.c (objc_is_strong_p): gc-attribute of 
	closure pointers are on its function type.

2008-04-10  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5849129
	* objc-act.c (encode_pointer): encode block pointer as '@'.
	(encode_type): Add sncoding support for block pointer encopding.

2008-03-31  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5832193
	* objc-act.c (objc_is_gcable_type): A block type is also gc'able.
	(objc_generate_write_barrier): Allow write-barriers when assigning to
	a block pointer object.

2008-03-31  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5831920
	* objc-act.c (objc_type_valid_for_messaging): A block is a valid object for
	messaging.

2008-03-28  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5808305
	* objc-act.c (release_closure_component): Do a plain bitwise copy
	of object pointers of const copied-in object poiners (no more
	retain autorelease thing).

2008-03-28  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5809099
	* objc-act.c (objc_finish_message_expr): Treat closure pointer receiver as
	an 'id' object.

2008-03-26  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5782740 - Minor tweak.
	* objc-act.c (release_closure_component): Message sent is
	"release' instead of "retain".

2008-03-24  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5811191
	* objc-act.c (build_ivar_reference): Warn if an ivar is declared
	inside an |...| block. Treat all ivar access such that their
	implicit 'self' is copied-in const and ivar reference is
	implicit byref.

2008-03-13  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5796058 - Minor change
	* objc-act.c (build_ivar_reference): All 'ivar' in closures
	are now treated as though declared 'byref'.

2008-03-12  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5795493 - type matching of closure types
	* objc-act.c (objc_types_are_equivalent): Added case for
	CLOSURE_POINTER_TYPE

2008-03-12  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5796058 - ivar in blocks
	* objc-act.c (build_ivar_reference): If 'ivar' is used
	in a block, register it as copied-in or byref ivar.
	(objc_lookup_ivar): If variable representing a copied-in or byref
	ivar just returh it.

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

	Radar 5782740 (ivars)
	* objc-act.c (build_ivar_reference): 'self' will be
	a copied-in variable when implicitly used for an ivar
	reference.

2008-03-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5782740
	* objc-act.c (retain_closure_component, release_closure_component,
	copy_in_object, closure_requires_copying): New

2008-04-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5893391
	* objc-act.c (objc_build_property_reference_expr): Protocol qualified 'id'
	typed receivers are valid object for property reference expressions.
	(objc_build_getter_call): Generate getter call when receiver is 
	a protocol qualified 'id' experssion.

2008-04-24  Caroline Tice  <ctice@apple.com>

        * objc-act.c (objc_start_function):  Fix APPLE LOCAL markers.

2008-04-23  Caroline Tice  <ctice@apple.com>

        Radar 5839812
        * objc-act.c (objc_start_function):  Add new parameter, 'method';
	if 'method' is non-NULL, give 'fndecl' the same source location as 
	'method'.
	(objc_add_property_setter_method):  Set the source location of 
	'selector' to the source location of 'x'.
	(build_module_initializer_routine):  Pass NULL_TREE to 
	objc_start_function for the new method parameter.
	(objc_synthesize_new_getter):  copy 'decl' and give it the same source 
	location as 'property' before passing it to 
	objc_start_method_definition.
	(objc_synthesize_new_setter):  Likewise.
	(finish_class): Give 'getter_decl' the same source location as 'x'; 
	likewise for 'setter_decl'.
	(really_start_method):  Pass 'method' to objc_start_function.
	(objc_declare_property_impl):  Assign 'property_decl' the current 
	input location.

2008-04-15  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5852190
	* objc-act.c (objc_synthesize_new_setter): Be smarter
	in finding setter method's value argument.

2008-04-03  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5724385 (tweaked for bitfield ivars).
	* objc-act.c (build_v2_ivar_list_initializer): Alignment of
	bitfield ivar is that of its underlying type.

2008-04-01  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5835805
	* objc-act.c (start_class): If using a class alias,
	resolve it to its class.

2008-03-26  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5218071
        * objc-act.c (objc_compare_types): Add special handling for property
        types in base and derived class, to check for more specialization.
        (diagnose_property_mismatch): When type of readonly properties mismatch
        check for specialization.
        (objc_merge_proto_properties_in_class): call to diagnose_property_mismatch
        takes an extra argument.
        (objc_compare_properties_with_super): Ditto

2008-03-20  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5809596
	* objc-act.c (objc_init): For all objc ABIs 
	-fobjc-call-cxx-cdtors is on by default

2008-03-20  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5802025
	* objc-act.c (objc_build_property_getter_func_call): New
	(objc_gimplify_expr): Use objc_build_property_getter_func_call
	
2008-03-19  Fariborz Jahanian <fjahanian@apple.com>

        Radar 5471096
	* objc-act.c (objc_is_public): For cateogies, look for 'ivar'
	in its class.

2008-03-11  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5791701
	* objc-act.c (objc_build_aggregate_ivar_layout): Special
	treatment when last field is a bitfield for ivar layout.

2008-03-11  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5781140
	* objc-act.c (objc_build_aggregate_ivar_layout): Check on
	no-field and return. 

2008-03-04  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5774213
	* objc-act.c (handle_impent): Output global category name
	for 32bit abi only.

2008-03-03  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5777307
	* objc-act.c (lookup_nested_method): Lookup in protocol list for
	setter/getter declarations.

2008-03-03  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5698469
	* objc-act.c (objc_add_property_variable): Say "default assign"
	when warning.

2008-02-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5724385
	* objc-act.c (build_v2_ivar_list_initializer): Remove dead code. 
	Fix alignment of fields to the alignment of underlying type.
	(generate_v2_ivar_lists): Compute number of ivars to exclude unnamed 
	bitfields.

2008-02-06  Josh Conner  <jconner@apple.com>

	Radar 5726269
	* objc-act.c (objc_init): Invoke OBJC_TARGET_FLAG_OBJC_ABI.

2008-01-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5370783
	* objc-act.c (add_method_to_hash_list): Change argument passed
	to comp_proto_with_proto.
	(objc_add_method): Ditto.
	(objc_process_getter_setter): Change argument passed
	to match_proto_with_proto.
	(match_proto_with_proto): With 'strict' equal 1, allow
	valid object pointer conversion as valid type match.
	(really_start_method): Allow finding prototype in one
	of super classes of current implementation.
	
2008-01-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5676962
	* objc-act.c (objc_build_struct): Save and restore 
	TYPE_LANG_SPECIFIC objects.

2008-01-10  Josh Conner  <jconner@apple.com>

	Radar 5675908
	* objc-act.c (objc_synthesize_new_setter): Don't force
	flag_objc_gc to 1 before calling build_modify_expr.

2008-01-10  Josh Conner  <jconner@apple.com>

	Radar 5680184
	* objc-act.c (objc_init): Add support for
	flag_objc_legacy_dispatch with objc-2.0.
	(synth_module_prologue): Likewise.
	(get_arg_type_list): Likewise.
	(objc_finish_message_expr): Likewise.

2007-11-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5607453
	* objc-act.c (objc_add_property_variable): Exclude 'id' and
	'Class" object types for "NSCopying" protocol warning.

2007-11-28  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5610134
	* objc-act.c (ivar_offset_ref): assertion added.
	(objc_synthesize_new_getter): Produce non-fragile offset tree
	for 64bit ABI.
	(objc_synthesize_new_setter): Ditto.

2007-11-05  Josh Conner  <jconner@apple.com>

	Radar 5569420
	* objc-act.c (build_objc_method_call): Use aggregate_value_p
	to determine dispatch mechanism.

2007-10-26  Josh Conner  <jconner@apple.com>

	Radar 5562046
	* objc-act.c (generate_v2_shared_structures): Fix signedness
	mismatch.

2007-08-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4947311
	* objc-act.c (objc_start_protocol): Takes attribute list as new argument
	(start_protocol): Takes attribute list as new argument and
	Sets protocol's PROTOCOL_ATTRIBUTES field.
	(objc_declare_protocols): Ditto.
	(objc_handle_protocol_attrs): New routine to warn on 'deprecated' and
	'unavailable' protocols.
	(lookup_and_install_protocols): Call objc_handle_protocol_attrs to warn
	on protocol attributes.
	* objc-act.h (PROTOCOL_ATTRIBUTES): Macro for protocol's attributes.
	
2007-08-21  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5424473
	* objc-act.c (start_method_def): Exclude +finalize from
	warning issuance (was radar 4757423).

2007-08-20  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5422751
	* objc-act.c (objc_protocol_implementation): Function removed.

2007-08-17  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5376125 (64bit abi)
	* objc-act.c (objc_property_access_info): Warning check for 32bit abi only.
	(objc_v2_build_ivar_ref): Warning for 64bit abi.

2007-08-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 3533972
	* objc-act.c (objc_finish_message_expr): Do the receiver type
	conversion if user has provided one.

2007-08-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5409313
	* objc-act.c (objc_build_selector_expr): Diagnose empty @selector
	directive.

2007-08-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5407792
	* objc-act.c (objc_v2_encode_prop_attr): Add 'N' for nonatomic
	property attribute encoding.

2007-08-10  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5376125
	* objc-act.c (objc_warn_direct_ivar_access): New
	(objc_build_getter_call): Warn if 'ivar' accessed outside
	property context.
	(objc_synthesize_new_getter): Turn off above warning if 'ivar' is
	accessed for getter synthesis.
	(objc_synthesize_new_setter): Turn off above warning if 'ivar' is
	accessed for setter synthesis.

2007-08-10  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5398274
	* objc-act.c (objc_synthesize_new_setter): Set 'used' flag 
	on '_value' argument when doing lhs = _value;

2007-08-08  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5389292
	* objc-act.c (objc_declare_property_impl): For ivar decl. get the 
	underlying bitfield type for comparison.

2007-08-07  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5390587
	* objc-act.c (objc_build_property_reference_expr): Preserve the original
	receiver.property_name information.
	(objc_resolve_build_property_setter_name): Get 'setter' name from original property name.
	(objc_finish_message_expr): return error_mark_node on error.
	(finish_class): Set property context field only when new getter is
	introduced (but not when existing one is found).

2007-07-31  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5259868
	* objc-act.c (objc_build_ivar_layout): Compress ivar layout nibbles
	if can.

2007-07-27  Fariborz Jahanian <fjahanian@apple.com>

	Radar 3742561
	* objc-act.h (objc_memmove_collectable_decl): New declaration
	* objc-act.c (objc_build_memmove_collectable): New
	(objc_aggr_type_strong): New
	(objc_generate_write_barrier): Generate write barrier call for
	structs holding object pointers (or __strong pointers).
	(build_next_objc_exception_stuff): Generate the write barrier function
	declaration.

2007-07-24  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5355344
	* objc-act.c (cp_objc_protocol_id_list): New

2007-07-17  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5338634
	* objc-act.c (finish_class): Fix check for name conflict between
	property name and its setter name.

2007-07-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5333233
	* objc-act.c (generate_v2_shared_structures): If class has no
	'ivar', set 'field' to class's hiden field (for its super class).

2007-07-13  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5277239
	* objc-act.c (lookup_method_static): Takes a new argument.
	(objc_property_access_info): Now recognizes 'receiver' when 
	it is a class object.
	(objc_build_property_reference_expr): Can now build property
	reference expression for class-name.class-method syntax as well.
	(objc_build_getter_call): Can now build method-call expression from
	property reference expression.
	(objc_resolve_build_property_setter_name): Can now build a setter name
	(which should be a class method) for a property dot-syntax used on a
	class object.
	(objc_finish_message_expr): Add argument in call to lookup_method_static.
	(really_start_method): Ditto.
	(lookup_method_static): Has a new argument which when true only finds class
	methods.
	
2007-07-10  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5285911
	* objc-tree.def (OBJC_PROPERTY_REFERENCE_EXPR): New code tree.
	* objc-act.c (objc_property_access_info): New
	(objc_build_property_reference_expr): New
	(objc_property_reference_expr): New
	(objc_property_call): Removed
	(objc_v2_build_setter_call): Removed
	(objc_v2_build_incr_decl_setter_call): Removed
	(objc_build_getter_call): Revised and greatly simplified.
	(objc_build_setter_call): Revised and greatly simplified.
	(objc_build_incr_decr_setter_call): Revised and greatly simplified.
	(objc_gimplify_expr): Build getter for OBJC_PROPERTY_REFERENCE_EXPR
	tree before gimplification.

2007-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5082000
	* lang-specs.h (print-objc-ivar-layout): Add
	* objc-act.c (total_type_elements): New
	(OUTPUT_LAYOUT_BYTE): New macro
	(adjust_max_layout_buf_size): New
	(objc_build_aggregate_ivar_layout): Add support to handle
	layout for ivar of array type.
	(objc_build_ivar_layout): Modified to support dynamic
	buffer allocation and printing of gc ivar layout on demand.

2007-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5251019
	* objc-act.c (objc_build_ivar_layout): ivar layout nibble string
	must include count of words to skip at the end.


2007-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5276085

	* objc-tree.def (OBJC_WEAK_REFERENCE_EXPR): New tree code.
	(objc_tree_is_weak_expr): New routine to decide if expression
	is 'weak' reference.
	(objc_build_weak_reference_tree): New routine to build a
	'weak' reference tree.
	(objc_weak_reference_expr): New routine to return the 'weak'
	reference expression tree.
	(objc_synthesize_getter, objc_synthesize_new_getter): Call
	objc_build_weak_reference_tree.
	(objc_generate_weak_read): Removed.
	(objc_remove_weak_read): Removed.
	(objc_gimplify_expr): Take a OBJC_WEAK_REFERENCE_EXPR
	tree and covert it into a 'weak' reference API before
	gimplification.

2007-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5279122
	* objc-act.c (objc_build_compound_setter_call): Decay rhs before using it in
	a setter call generation.

2007-06-18  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5265737
	* objc-act.c (objc_v2_build_setter_call, objc_build_setter_call):
	Look into rhs of TARGET_EXPR for the getter tree (c++ only).

2007-06-18  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5265608
	* objc-act.c (objc_declare_property_impl): Error reporting
	replaces gcc_assert.

2007-06-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5250860 (Remove old property)
	* objc/objc-act.c (objc_set_property_attr,
	objc_add_property_variable, objc_build_getter_call,
	objc_setter_func_call, objc_v2_encode_prop_attr, 
	objc_v2_merge_property, declare_atomic_property_api,
	aggregate_contains_objc_pointer, synth_module_prologue,
	objc_finish_message_expr, objc_merge_proto_properties_in_class,
	objc_process_getter_setter, objc_synthesize_getter,
	objc_synthesize_setter, objc_gen_property_data,
	objc_add_internal_ivar, finish_class): Remove code related to old
	property.
	* objc/objc-act.h: Remove all declarations related to old
	property.

2007-05-31  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5172645
	* objc-act.c (objc_add_property_variable): Check 
	for warn_property_assign_default flag added.

2007-05-30  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5232840
	* objc-act.c (objc_synthesize_new_setter): Set TREE_USED
	flag on parameter being used.

2007-05-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5217964
	* objc-act.c (objc_build_ivar_layout): Skip count bits must all
	come before the scan count bits.

2007-05-23 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5195402
	* objc-act.c (objc_check_nsstring_pointer_type): New
	(objc_check_format_nsstring): Call objc_check_nsstring_pointer_type

2007-05-18  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5202926
	* objc-act.c (build_metadata_decl): Takes a new argument.
	(forward_declare_categories, synth_v2_forward_declarations,
	generate_v2_shared_structures): Pass false/true to 
	build_metadata_decl.
	(objc_anonymous_local_objc_name): New.

2007-05-17  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5207415
	* objc-act.c (objc_synthesize_new_getter): Use existing getter name for
	synthesis.
	(objc_synthesize_new_setter): Use existing setter name for synthesis.

2007-05-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5207415
	* objc-act.c (objc_synthesize_new_getter): Use existing getter name for
	synthesis.
	(objc_synthesize_new_setter): Use existing setter name for synthesis.

2007-05-12  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5192466
	* objc-act.c (build_v2_protocol_template): Define two new fields
	for 'struct protocol_t'.
	(build_protocol_initializer): Initialize the two new fields.

2007-05-07  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4157812
	* objc-act.c (objc_add_property_setter_method): Call to objc_build_keyword_decl
	has new argument.
	(finish_class): Ditto.
	(objc_add_method_declaration): Quick return on errornous selector.
	(objc_build_keyword_decl): Save argument attribute passed to objc_build_keyword_decl
	in newly built argument node.
	(start_method_def): Process selector argument's attribute.
	* objc-act.h (KEYWORD_ARG_ATTRIBUTE): New macro
	
2007-05-03  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5180172
	* objc-act.c (objc_declare_property_impl): Issue error on use of @synthesize
	in a category implementation.

2007-05-03  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4874626
	* objc-act.c (objc_finish_file): Pass current input_location
	to emit_instantiate_pending_templates.

2007-04-30  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5159695
	* objc-act.c (objc_add_property_variable): Warn on mismatched attribute
	in class continuation property declaration.

2007-04-30  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5168496
	* objc-act.c (managed_objc_object_pointer): New
	(objc_add_property_setter_method): Call it instead
	of objc_type_valid_for_messaging.
	(objc_add_property_variable): Ditto.
	(objc2_valid_objc_catch_type): Replaced inline code
	with call to managed_objc_object_pointer.
	
2007-04-25  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5159707
	* objc-act.c (objc_add_property_variable): Warn on mismatched type of
	property in class continuation and its main class.

2007-04-23  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5153561
	* objc-act.c (objc_init): Initialize data structures needed in
	objc2_eh_runtime_type routine.

2007-04-23  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5142207
	* objc-act.c (IS_CLS_META, CLS_HIDDEN, OBJC2_CLS_HIDDEN): New macros.
	(build_shared_structure_initializer): Use IS_CLS_META.
	(generate_v2_shared_structures): Add CLS_HIDDEN flag to 'info' field
	of class's meta-data.
	(generate_v2_shared_structures): Use OBJC2_CLS_HIDDEN instead of numeric
	value.

2007-04-20 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5130983
	* objc-act.c (objc_finish_foreach_loop): Issue error on non-lvalue
	selector expression.

2007-03-12  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5023725
	* objc-act.c (OBJC_FLAG_ZEROCOST_EXCEPTIONS): New macro
	(objc_init_exceptions): Use it.

2007-04-19 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5140757
	* objc-act.c (objc_build_compound_setter_call): Use save_expr 
	instead of copy_node for rhs.

2007-04-18 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5128402
	* objc-act.c (objc_finish_foreach_loop): Set elem to nil at the else part 
	of the outer if-stmt instead of at the begining.

2007-04-09 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5096648
	* objc-act.c (TARGET_CFSTRING_P): Removed
	(objc_NSString_format): Removed

2007-04-05 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5109807
	* objc-act.c (objc_build_ivar_layout): skip the gap

2007-04-02  Fariborz Jahanian <fjahania@apple.com>

	Radar 4929049
	(objc_remove_weak_read): Modify how typecast is applied.

Change code because input tree has changed.

2007-03-30  Fariborz Jahanian <fjahania@apple.com>

	Radar 4727191 (tweaked)
	(objc_build_compound_setter_call): Set DECL_SEEN_IN_BIND_EXPR_P
	on Dupe'd local variable.

2007-03-29 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5096644 
	* objc-act.c (objc_add_property_variable): Check for forward class
	use of property type before doing some checking.

2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
	
	Radar 5080710
	* objc-act.c (objc_finish_message_expr, build_objc_method_call,
	objc_synthesize_new_getter, objc_synthesize_new_setter): Added check
	for TREE_ADDRESSABLE flag in deciding if method returns its structure
	value in memory.

2007-03-29  Fariborz Jahanian <fjahanian@apple.com>
	Radar 4947014 - objc atomic property

	* objc-act.h (umsg_GetAtomicProperty, umsg_SetAtomicProperty,
	umsg_CopyAtomicStruct, umsg_NSCopying_Type): New decl.
	(ATOMIC_PROPERTY, PROPERTY): New macros.
	* objc-act.c (objc_set_property_attr): Register atomic/nonatomic
	properties.
	(objc_add_property_variable): Issue new warning for -fobjc-gc-only
	when default 'assign' property's object implements '<NSCopying>'.
	(declare_atomic_property_api): New routine
	(build_id_NSCopying_type): New routine
	(declare_prototype_property_bycopy): Clean up to call build_id_NSCopying_type.
	(aggregate_contains_objc_pointer): New routine
	(diagnose_property_mismatch): Diagnose on atomic/nonatomic mismatch.
	(objc_synthesize_new_getter): Generate atomic 'helper's in getters for
	'copy'/'retain', as well as those struct objects passed in memory under
	a variety of situations.
	(objc_synthesize_new_setter): Generate atomic 'helper's in setters for
	'copy'/'retain', as well as those struct objects passed in memory under
	a variety of situations.

2007-03-29 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4564694
	* objc-act.c (objc_is_reserved_word): @package is new objc keyword.
	(add_instance_variable): Treat @package ivar same as @public (32bit)
	and same as @private (64bit) for linkage purposes.

2007-03-27 Fariborz Jahanian <fjahanian@apple.com>

	Radar 5040740
	* objc-act.c (lookup_nested_method): New
	(objc_synthesize_new_getter): Call lookup_nested_method.
	(objc_synthesize_new_setter): Ditto.
	(lookup_nested_property): New
	(objc_declare_property_impl): Call lookup_nested_property.

2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
	                               
	Radar 5060975
	* objc-act.c (build_objc_exception_stuff):  objc_exception_throw (id)
	claims that it may throw an exception

2007-03-27  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5025001
	* objc-act.c (objc_build_struct): Inser a new char :0 bf if last ivar
	was a bitfield.
	(build_v2_ivar_list_initializer): Fix an unrelated objctivec-c++ bug.

2007-03-27  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5005756
	* objc-act.c (build_objc_method_call, build_v2_build_objc_method_call):
	Don't check on method attributes sent to receiver of 'id' or 'Class'
	types.

2007-03-23  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5002848
	* objc-act.c (generating_property_type_encoding): Declare
	(objc_v2_encode_prop_attr): Set generating_property_type_encoding.
	(encode_pointer): Get underlying type of a type name for encoding.

2007-03-23  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4985544
	* objc-act.c (objc_check_format_nsstring): New
	(objc_NSString_format): New

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4994854
	* objc-act.c (objc_start_category_interface): If anonymous category
	already declared, then use it.
	(objc_add_property_variable): Insert new property into primary class.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4965989
	* objc-act.h (ANONYMOUS_CATEGORY): New macro.
	* objc-act.c (objc_add_property_variable): Add merging of
	property in anonymous category into primary class.
	(objc_merge_methods): New.
	(finish_class): Merge methods from anonymous categories into
	primary class.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Removed objc2 hybrid abi
	* objc-act.c: All code and checking related to hybrid abi
	is removed.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4995942
	* objc-act.c (objc2_build_ehtype_initializer): Change setting of
	_objc_ehtype_vtable field.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4995066
	* objc-act.c (objc_build_ivar_assignment): Takes new argument.
	(objc_build_ivar_assignment): Call objc2_outervar for valid
	'non-fragile' ivars only.
	(objc_generate_write_barrier): Add objc2_ivar_ref as 2nd argument.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4982951
	* objc-act.c (objc2_outervar): New
	(objc2_build_indirect_ref_ivar2): New
	(objc_substitute_decl): Handle objc2's 'non-fragile' ivar reference.
	(objc_build_ivar_assignment): Get the outervar for objc2
	(objc_v2_ivar_reference): Now returns the objc2's ivar offset variable
	upon success.
	(objc_strip_off_indirection, objc_generate_write_barrier): Calls
	objc_v2_ivar_reference differently.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4957534
	* objc-act.c (objc2_build_throw_call): Call objc_exception_rethrow
	for @throw in objc2's abi.
	(build_objc_exception_stuff): Define objc_rethrow_exception_decl.
	* objc-act.h (objc_rethrow_exception_decl): Renamed from
	objc_rethrow_exception (previously unsed).

2007-03-22   Fariborz Jahanian <fjahanian@apple.com>

	Radar 5008110 - part2 (minor tweak)
	* objc-act.c (init_UOBJC2_EHTYPE_decls): Moved up.
	(objc2_build_ehtype_initializer): Call init_UOBJC2_EHTYPE_decls.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 5008110
	* objc-act.c (objc2_build_ehtype_var_decl): Takes two new argument.
	(objc2_objc_exception_attr): New
	(objc2_eh_runtime_type): Generate extern or weak EHTYPE meta-data
	depending on setting of __objc_exception__ attribute.
	(generate_v2_shared_structures): Generate EHTYPE meta-data depending on setting
	of __objc_exception__ attribute.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4951324
	* objc-act.c (objc2_eh_runtime_type): Remove call to
	init_UOBJC2_EHTYPE_decls.
	(objc_init_exceptions): Call init_UOBJC2_EHTYPE_decls here.
	(objc2_build_extern_decl_catch_object): New
	(objc_begin_catch_clause): Call objc2_build_extern_decl_catch_object
	to declare objc2's new typeinfo declarations.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4995967
	* objc-act.c (objc_begin_catch_clause) Assume 'id obj' for
	the @catch (...) expression.

2007-03-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 2848255
	* objc-act.h: New declaratons for objc2 exception APIs.
	* objc-act.c (objc_init): Use objc2_eh_runtime_type with
	-fobjc-zerocost-exceptions for exception type mangling.
	(create_weak_decl): New.
	(objc2_build_ehtype): New.
	objc2_build_ehtype_initializer): New.
	(objc2_build_ehtype_var_decl): New.
	(objc2_valid_objc_catch_type): New.
	(objc2_eh_runtime_type): New.
	(objc_init_exceptions): New objc2 exception initialization,
	declare __objc_personality_v0 personality function.
	(objc_begin_catch_clause): Add support for objc2 catch ABI and
	new @catch(...) syntax.
	(objc2_liteweight_finish_try_stmt): New.
	(objc_finish_catch_clause): Add support for insertion of
	new control for objc2 catch.
	(objc_build_throw_stmt): Now calls objc2_build_throw_call.
	(objc2_build_throw_call): New routine to call for the throw ABI.
	(build_objc_exception_stuff): Declares vaiours objc2 new ABI functions.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4894756
	* objc-act.c (STRING_V2_IVAR_OFFSET_PREFIX): New macro.
	(objc_v2_ivar_reference): New routine.
	(objc_strip_off_indirection): Don't strip off an objc2 ivar
	reference tree.
	(objc_is_ivar_reference_p): Check for objc2 ivar tree.
	(objc_generate_write_barrier): Added support for generation
	of write barrier for new objc2 ivar reference tree.
	(objc_class_visibility): Use STRING_V2_IVAR_OFFSET_PREFIX.

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4966565
	* objc-act.c (get_category_base_class_impl): New.
	(lookup_accessor_in_base_class_impl): New.
	(objc_gen_property_data): Further look into base class
	implementation before issuing warning on unimplemented
	accessor.

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4963113
	* objc-act.c (check_methods_accessible): Do not warn of unimplemmented

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4968128
	* objc-act.c (strip_end_colon): New
	(finish_class): Call strip_end_colon to strip ':'
	for setter method name declaration.

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4959107
	* objc-act.c (objc_build_getter_call): Lookup in protocol list also.

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4951615
	* objc-act.h (IVAR_PUBLIC_OR_PROTECTED): New macro.
	* objc-act.c (ivar_offset_ref): Use IVAR_PUBLIC_OR_PROTECTED to
	decide if 'ivar' offset variable is 'private extern' or not.
	(add_instance_variable): Set IVAR_PUBLIC_OR_PROTECTED flag.

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4954480
	* objc-act.c (objc_v2_build_ivar_ref): Check for bad 'ivar' use.

2007-02-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4949034
	* objc-act.c (objc_init): Set default setting
	for flag_objc_call_cxx_cdtors.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4923634
	* objc-act.c (finish_objc): Use correct value for objc2's
	CLS_HAS_CXX_STRUCTORS flag.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4945770
	* objc-act.c (objc_build_struct): Check for corner cases before
	building the TYPE_OBJC_INFO tree list.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4897159
	* objc-act.c (objc_synthesize_new_setter): Get the first argument
	of setter in a fail-safe manner.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4899564
	* objc-act.c (finish_class): Diagnose __weak on 'retain'/'copy'.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4903391
	* objc-act.c (objc_common_type): Take a new value for argno
	for property @synthesize type comparison.
	(objc_declare_property_impl): Call objc_compare_types to
	compare ivar and property's type according to objc's type
	conversion rules.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4879524
	* objc-act.c (objc_add_property_variable): typo in warning fixed.

2007-02-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4781080
	* objc-act.c (objc_finish_message_expr): Use umsg_fixup_decl for
	float/double returning methods.

2006-12-18  Fariborz Jahanian <fjahania@apple.com>

	Radar 4888238
	* objc-act.c (generate_objc_image_info): Declare _OBJC_IMAGE_INFO
	as a local symbol.

2006-12-15  Fariborz Jahanian <fjahania@apple.com>

	Radar 4449535
	* objc-act.c (objc_impl_forwardInvocation): New
	(check_protocol): Call objc_impl_forwardInvocation

2006-12-16  Fariborz Jahanian <fjahania@apple.com>

	Radar 4838528
	* objc-act.c (objc_setter_func_call): Check type of
	setter method.

2006-12-14  Fariborz Jahanian <fjahania@apple.com>

	Radar 4841013
	* objc-act.h (PROPERTY_ASSIGN): Modified
	* objc-act.c (objc_add_property_variable): No 'assign'
	warning for 'readonly' property decl.

2006-12-14  Fariborz Jahanian <fjahania@apple.com>

	Radar 4712415
	* objc-act.c (objc_add_property_variable): Carry deprecated attribute
	into property node.
	(objc_add_property_setter_method): Carry deprecated attribute from
	property node into instance method node.
	(finish_class): Ditto

2006-12-14  Fariborz Jahanian <fjahania@apple.com>

	Radar 4854605
	* objc-act.c (objc_finish_foreach_loop): Set iterator
	to nil.

2006-12-14  Fariborz Jahanian <fjahania@apple.com>

	Radar 4855821
	* objc-act.c (objc_add_property_variable): Don't warn if 'assign'
	storage attribute is explicit.

2006-12-13  Fariborz Jahanian <fjahania@apple.com>

	Radar 4531086
	* objc-act.c (OBJC_WARN_OBJC2_FEATURES): New macro to warn on
	use of objc2 features for older OS's.
	(objc_init): Warn
	(objc_add_property_variable): Warn
	(objc_build_foreach_components): Warn

2006-12-13  Fariborz Jahanian <fjahania@apple.com>

	Radar 4862848
	* objc-act.c (OBJC_FLAG_OBJC_ABI): define macro if undefined.
	(objc_init): Use OBJC_FLAG_OBJC_ABI
	(objc_is_public): Error recovery found by accident.

2006-12-11  Fariborz Jahanian <fjahania@apple.com>

	Radar 4869979
	* objc-act.c (objc_type_has_bycopy_attr): New
	(objc_diagnose_bycopy_type): New
	(objc_add_method_declaration): Call objc_diagnose_bycopy_type

2006-12-07  Fariborz Jahanian <fjahanian@apple.com>

	Addendum to Radar 4810587

	* objc-act.c (generate_objc_image_info): Remove what was done
	for 4.0 and replace it with force symbol generation for
	_OBJC_IMAGE_INFO object.

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

	Radar 4859096
	* objc-act.c (objc_property_call): New function.

2006-11-17  Fariborz Jahanian <fjahania@apple.com>

	Radar 4843145
	* objc-act.c (objc_visibly_hidden_class): Removed.
	(objc_class_visibility): New
	(objc_create_global_decl_for_class): New
	(ivar_offset_ref): Call objc_create_global_decl_for_class.
	(generate_v2_shared_structures): Call 
	objc_create_global_decl_for_class.
	(objc_warn_on_class_attributes): Don't warn on "default"
	visibility either.

2006-11-10  Fariborz Jahanian <fjahania@apple.com>

	Radar 4829803
	* objc-act.c (objc_is_gcable_type): Make quick return
	of C++'s unknown type.

2006-11-09  Fariborz Jahanian <fjahania@apple.com>

	Radar 4810609
	* objc-act.c (objc_init): Set flag_objc_gc if 
	flag_objc_gc_only is set.
	(generate_objc_image_info): For generate_objc_image_info
	flag bits are 11x with flag_objc_gc_only.

2006-11-08  Fariborz Jahanian <fjahania@apple.com>

	Radar 4810587
	* objc-act.c (finish_objc): Generate objc section info.
	in all cases.
	(generate_objc_image_info): Force zeros in objc section not to
	go to bss section. 

2006-11-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4781080 (part 2)
	* objc-act.c (synth_module_prologue): Removed TARGET_i386 switch.
	(objc_finish_message_expr): Call objc_fpreturn_msgcall in new place.
	(build_objc_method_call) : Ditto

2006-11-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4781080
	* objc-act.c (objc_finish_message_expr): Call objc_fpreturn_msgcall
	(build_objc_method_call) : Ditto

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

	Radar 4805612
	* objc-act.c (objc_is_public): Check for accessibility of 'ivar'
	in a c-function nested in an objective-c class.

2006-11-02  Fariborz Jahanian  <stuart@apple.com>

	Radar 4817072
	* objc-act.c (objc_lookup_property_ivar): New
	(objc_synthesize_new_getter, objc_synthesize_new_setter): 
	Call objc_lookup_property_ivar.
	(objc_declare_property_impl): Remove code which diagnosed missing ivar
	and inserted it (too soon).
	
2006-11-02  Fariborz Jahanian <fjahania@apple.com>

	Radar 4815054
	* objc-act.c (finish_class): Change text of diagnostic.
	
2006-11-02  Fariborz Jahanian <fjahania@apple.com>

	Radar 4815061
	* objc-act.c (diagnose_property_mismatch): Warn when readwrite is restricted
	to readonly in derived class.

2006-11-02  Fariborz Jahanian <fjahania@apple.com>

	Radar 4816280
	* objc-act.c (objc_gen_property_data): Warn when @implementation does not
	implemented property.

2006-11-01  Fariborz Jahanian <fjahania@apple.com>

       	Radar 4805321 (new property).

	* objc-act.h (PROPERTY_COPY, PROPERTY_RETAIN,
	PROPERTY_ASSIGN, PROPERTY_READWRITE): Add property macros.
	* objc-act.c (objc_set_property_attr): Add cases for new
	property attrbutes added. 
	(objc_resolve_build_property_setter_name): Add.
	(diagnose_property_mismatch): Add.
	(objc_compare_properties_with_super): Add.
	(objc_synthesize_new_getter): Add. 
	(objc_synthesize_new_setter): Add.
	(objc_declare_property_impl): Add.
	(objc_add_property_variable): Big change to support addition of new
	property declarations.
	(objc_build_getter_call): Several changes to support the new 
	property getter call semantics.
	(objc_setter_func_call): Support for new setter call in 
	new property.
	(objc_v2_build_setter_call): Fix a bug found on the side-line
	when setter is called on 'super'.
	(objc_v2_encode_prop_attr): Added support for new property in the
	metadata for properties.
	(objc_build_aggregate_ivar_layout): Fixed bug found on side line
	when several objective-c property test cases compiled as objective-c++.
	(objc_v2_merge_property): Added support for new property merge of data.
	(objc_finish_message_expr): Better diagnostic for new property error.
	(lookup_method_static): Added argument to facilitate new property lookup.
	(objc_merge_proto_properties_in_class): Added support for new property
	and diagnosis when merging protocol properties into adoptin class.
	(objc_gen_property_data): Added supprt for synthesis of getter
	or setter in new property.
	(objc_add_internal_ivar): Modified to support synthesis of 'ivar'
	in new property.
	(finish_class): Support for the new property.
	
2006-10-23  Fariborz Jahanian <fjahania@apple.com>

	Radar 4783068
	* objc-act.c (objc_build_ivar_assignment): Turn off Winvalid-offsetof 
	for synthesized null-pointer dereferencing expression.

2006-10-06  Fariborz Jahanian <fjahania@apple.com>

	Radar 4725660
	* objc-act.c (objc_build_getter_call): Check for a valid class.

2006-09-29  Fariborz Jahanian <fjahania@apple.com>

	Radar 4757423
	* objc-act.c (should_call_super_finalize): New flag.
	(objc_finish_message_expr): if [super finalize]
	reset the flag.
 	(start_method_def): flag that method is a 'finalize'
	definition.
	(objc_finish_method_definition): If flag is still true
	then warn.	
	
2006-09-28  Fariborz Jahanian <fjahania@apple.com>

	Radar 4477797
	* objc-act.c (objc_build_struct): Set DECL_IGNORED_P flag in
	'super' class.

2006-09-22  Fariborz Jahanian <fjahania@apple.com>

	Radar 3904139
	* objc-act.c (objc_demangle): Use exclusively
	cxx_printable_name for obj-c++ name demangling.

2006-09-21  Fariborz Jahanian <fjahania@apple.com>

	Radar 4695274
	* objc-act.c (objc_add_internal_ivar): Insert property ivar before
	c++'s inserted type_decl field node.

2006-09-20  Fariborz Jahanian <fjahania@apple.com>

	Radar 4738176
	* objc-act.c (objc_build_compound_setter_call): Set 
	TREE_NO_WARNING on synthesized compound expression.

2006-09-19  Fariborz Jahanian <fjahania@apple.com>

	Radar 4734562
	* objc-act.c (objc_demangle): Takes new argument
	to decide if doing 'pretty' printing or not.
	(objc_printable_name): Pass down previously
	unused argument to objc_demangle.

2006-09-18  Fariborz Jahanian <fjahania@apple.com>

	Radar 4667060
	* objc-act.c (objc_finish_foreach_loop): Add support for
	setting of foreach loop controlling variable to 'nil' on
	normal loop exit.

2006-09-15  Fariborz Jahanian <fjahania@apple.com>

	Radar 4727659
	* objc-act.c (really_start_method): Copy 'noreturn'
	attribute flag into FUNCTION_DECL node.

2006-09-14  Fariborz Jahanian <fjahania@apple.com>

	Radar 4724822
	* objc-act.c (lookup_property): Check for incomplete
	class.

2006-09-11  Fariborz Jahanian <fjahania@apple.com>

	Radar 4727191
	(objc_build_compound_setter_call): Set DECL_SEEN_IN_BIND_EXPR_P
	on Dupe'd local temp node.

2006-09-11  Fariborz Jahanian <fjahania@apple.com>

	Radar 4625843 - part2
	* objc-act.c (object_setProperty_bycopy): New.
	(synth_module_prologue): Remove prototype declaration of
	object_getProperty_bycopy and object_setProperty_bycopy builtins.
	(objc_build_getter_retval): Check for existance of 
	umsg_getProperty_bycopy prototype.
	(objc_synthesize_getter): Build prototype declaration for 
	umsg_getProperty_bycopy.
	(objc_build_setter_stmt): Check for existance of 
	umsg_setProperty_bycopy.
	(objc_synthesize_setter): Build prototype declaration for 
	umsg_setProperty_bycopy.	

2006-09-07  Fariborz Jahanian <fjahania@apple.com>

	Radar 4660569
	* objc-act.c (objc_synthesize_getter): Look up for accessors in categories
	before issuing the warning.
	* (objc_synthesize_setter): Ditto.

2006-09-07  Fariborz Jahanian <fjahania@apple.com>

	Radar 4719165
	* objc-act.c (setup_string_decl): In new objc2 abi use
	NSConstantString metadata in setting up the constant
	string structure.

2006-09-01  Fariborz Jahanian <fjahania@apple.com>

	Radar 4712269
	* objc-act.c (objc_build_compound_incr_decr_setter_call): New.
	(objc_v2_build_incr_decl_setter_call): New.
	(objc_build_incr_decr_setter_call): New.

2006-08-31  Fariborz Jahanian  <fjahanian@apple.com>

	Radar 4712188
	* objc-act.c (objc_build_compound_setter_call): Set
	TREE_NO_WARNING to suppress c++ warning.

2006-08-31  Fariborz Jahanian  <fjahanian@apple.com>

	Radar 4697411
	* objc-act.c (objc_volatilize_component_ref): New function.

2006-08-29  Fariborz Jahanian  <fjahanian@apple.com>

	Radar 4705298 
	* objc-act.c (objc_visibly_hidden_class): New.
	(ivar_offset_ref): Select function to declare the symbol
	 according to setting of the 'visibility' attribute.
	(generate_v2_shared_structures): Ditto.
	(objc_warn_on_class_attributes): Recognize 
	visibility("hidden") setting attribute on a class.
	
2006-08-29  Fariborz Jahanian <fjahania@apple.com>

	Radar 4705214
	* objc-act.c (build_v2_class_template): Move 'superclass' from 
	'class_ro_t' to 'class_t' metadata.
	Move 'ro' field to last of 'class_t's data member.
	(build_class_t_initializer): Corresponding changes to initialization 
	of the fields.
	(build_class_ro_t_initializer): Corresponding changes to initialization 
	of the fields.
	(generate_v2_shared_structures): Caller of build_class_t_initializer
	and build_class_ro_t_initializer with new argument list.

2006-08-28  Fariborz Jahanian <fjahania@apple.com>

	Radar 4702359
	* objc-act.c (generate_v2_shared_structures): instanceStart, instanceSize
	is now sizeof (struct class_t).

2006-08-25  Fariborz Jahanian <fjahania@apple.com>

	Radar 4689268
	* objc-act.c (start_class): On duplicate class implementation
	error, return the old class for graceful recovery.

2006-08-25  Fariborz Jahanian <fjahania@apple.com>

	Radar 4699834
	* objc-act.c (synth_module_prologue): Removed _rtp suffix from 
	objc_msgSend_fixup_rtp and variants.

2006-08-25  Fariborz Jahanian <fjahania@apple.com>

	Radar 4698856
	* objc-act.c (synth_module_prologue): Initialization of UOBJC_V2_CACHE_decl,
	UOBJC_V2_VTABLE_decl moved.
	(build_empty_cache_vtable_vars): New routine to declare UOBJC_V2_CACHE_decl
	and UOBJC_V2_VTABLE_decl.
	(generate_v2_shared_structures): Call build_empty_cache_vtable_vars.

2006-08-24  Fariborz Jahanian <fjahania@apple.com>

	Radar 4695101
	* objc-act.h (PROTOCOL_IMPL_OBJ): Removed.
	* objc-act.c (build_v2_class_template): weakIvarLayout is the new
	field.
	(build_class_ro_t_initializer): Takes weakIvarLayout as new
	argument and initializes the 'weakIvarLayout' field.
	(generate_v2_shared_structures): Construct and pass ivarLayout and
	weakIvarLayout to build_class_ro_t_initializer.
	(generate_v2_protocols): Construct property table and pass its 
	pointer to build_protocol_initializer.

2006-08-24  Fariborz Jahanian <fjahania@apple.com>

	Radar 4695109
	* objc/objc-tree.def (PROTOCOL_IMPLEMENTATION_TYPE): Removed.
	* objc-act.c (objc_protocol_implementation): Now just issue error.
	(build_v2_protocol_template): New fields for optionalInstanceMethods and
	optionalClassMethods added to protocol_t, First field renamed to 'isa'.
	(generate_v2_protocol_references): No longer needed code for implementation
	of protocols is removed.
	(generate_method_descriptors): optional method list pointers must have
	unique names.
	(build_protocol_initializer): Routine modified to accomodate initialization
	of new and modified fields in 'struct protocl_t'.
	(generate_v2_method_descriptors): Routine takes a new 'is_optional' argument and
	uses that to set values for UOBJC_PROTOCOL_OPT_CLS_METHODS_decl and
	UOBJC_PROTOCOL_OPT_NST_METHODS_decl variables.
	(generate_v2_category): Remove last argument in call to generate_v2_protocol_list.
	(objc_add_to_protocol_list_chain): Changed global_protocol_decl to
	protocol_decl to reflect that it is no longer global.
	(build_protocollist_translation_table): Pointer to protocol meta-data is now local.
	(build_v2_protocol_reference): Variable which holds protocol meta-data is now
	local.
	(generate_v2_protocols): Remove conditional on variable being extern.
	Code added for encoding optional methods.
	(objc_build_protocol_expr): build_v2_protocol_reference takes one less argument.

2006-08-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4491211
	* objc-act.c (build_objc_method_call): Method return type
	must be complete (instantiated) before determining if it is
	memory bound.

2006-08-17  Fariborz Jahanian

	Radar 4590221
	* objc-act.c (OFFS_MSGSEND_FAST, OFFS_ASSIGNIVAR_FAST): Moved to
	darwin.h.
	(synth_module_prologue): Replace POWERPC64 with check for OFFS_MSGSEND_FAST flag.
	Move setting of umsg_fpret_decl to the top.
	Remove setting of flag_objc_direct_dispatch.
	(objc_build_ivar_assignment): Use objc_assign_ivar_decl unconditionally. 
	(build_next_objc_exception_stuff): Replace TARGET_POWERPC with check
	for OFFS_ASSIGNIVAR_FAST flag. Remove setting of objc_assign_ivar_fast_decl
	in favor of setting of objc_assign_ivar_decl in both branch.
	(build_objc_method_call): Use umsg_decl unconditionally.
	* objc-act.h: Remove umsg_fast_decl and objc_assign_ivar_fast_decl decl.
	
2006-08-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4660579
	* objc/objc-act.c (objc_add_property_setter_method): New.
	(objc_add_property_variable): Resolve conflict between
	'readonly' interface property and writable implementation
	property.
	(is_property): Removed (unrelated to this radar).
	(finish_class): Call objc_add_property_setter_method instead of
	inlined code.

2006-08-15  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4668023
	* objc/objc-act.c (build_property_reference): Removed.
	(objc_lookup_ivar): Supert for property name access without
	use of 'self' qualifier is removed.

2006-08-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4666559
	* objc/objc-act.c (objc_continue_interface): Postpone outputting
	debug info. for objective-c classes.
	(objc_finish_interface): Output debug info. for objective-c classes.
	(build_private_template): Postpone setting TREE_USED flag until after
	debug info. is output.

2006-08-04  Mike Stump  <mrs@apple.com>

	Radar 4669052
	* Make-lang.in (objc-parse.y): Ensure that we don't rebuild.

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

	Radar 4664707
	* objc/objc-act.c (objc_create_named_tmp_var): Takes extra argument.
	(objc_build_compound_setter_call): New.
	(objc_v2_build_setter_call): Call objc_build_compound_setter_call to
	generate compound version of call to setter function.
	(objc_build_setter_call): Ditto.
	(objc_build_foreach_components): call objc_create_named_tmp_var
	with prefix argument.
		
2006-08-01  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4660366
	* objc/objc-act.c (objc_build_setter_stmt): Set flag_objc_gc so
	objc_assign_weak is generated on 'weak' setter ivar.

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

	Radar 4660569
	* objc/objc-act.c (objc_synthesize_getter): Warn if no synthesized 
	or user getter.
	(objc_synthesize_setter): Warn if no synthesized or user setter.

2006-07-31  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4653319
	* objc/objc-act.c (objc_add_property_variable): Issue diagnostic if class has no
	ivar attribute and implementation does not refer to a specific 'ivar' in the
	interface.
	(objc_build_getter_call): Support super.property.
	(nested_ivar_lookup): New.
	(objc_gen_one_property_data): Call nested_ivar_lookup to look for ivar
	in current and base class hierarchy.
	(objc_build_getter_retval): Ditto.
	(objc_build_setter_stmt): Ditto.
	(finish_class): Ditto.

2006-07-28  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4656712
	* objc/objc-act.c (objc_build_setter_stmt): Recover when synthesized 
	argument not found.
	(finish_class): Issue error when user declared accessor and compiler 
	is trying to synthesize one.

2006-07-26  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4649718, 4651088
	* objc/objc-act.c (objc_add_property_variable): err on bad property
	declarations.

2006-07-26  Fariborz Jahanian <fjahanian@apple.com>
    
	Radar 4653242
	* objc/objc-act.c (objc_gen_one_property_data): Check for missing 
	setter/getter in @implementation is removed.

006-07-26  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4649701
	* objc/objc-act.c (objc_gen_one_property_data): Also look in
	class's protocol-list for user-declared setter/getter names.

006-07-25  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4649663
	* objc/objc-act.c (objc_build_getter_retval): Remove meth_decl argument.
	Use argument passed after 'self', called '_cmd' to build getter call.
	(objc_synthesize_getter): Remove method_decl argument in call to
	objc_build_getter_retval.
	(objc_build_setter_stmt): Remove meth_decl argument.
	Use argument passed after 'self', called '_cmd' to build setter call.
	(objc_synthesize_setter): Remove method_decl argument in call to
	objc_build_setter_stmt.

006-07-25  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4590191
	* objc/objc-act.c (objc_init_exceptions): Issue warning on use of 
	@try/@catch and for Mac OS X version 10.2 and lower.

006-07-19  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4638467
	* objc/objc-act.c (objc_demangle): Changed argument to tree decl.
	call c++'s cxx_printable_name for demangling c++ names. 
	(objc_printable_name): Pass tree decl for the name to objc_demangle.

006-07-18  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4592503
	* objc/objc-act.c (objc_checkon_weak_attribute): New routine to check for
	__weak attribute use on declarations.

2006-07-17  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4631814
	* objc-act.c (build_property_reference): Preserve original 'self' tree in
	generated call to property's 'getter'.

2006-07-17  Fariborz Jahanian <fjahanian@apple.com>
	Radar 4621020 - small change
	* objc-act.c (objc_set_property_attr): Supprt 'weak' attribute
	unconditionally.

2006-07-14  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4621020
	* objc-act.c (objc_set_property_attr): Gather 'weak' attribute setting.
	(objc_add_property_variable): 'weak' attribute setting into property node.
	Diagnose a variety of mis-use.
	(objc_v2_encode_prop_attr): Encode 'weak attribute as 'W'.
	( objc_synthesize_getter): Call to objc_generate_weak_read for possible
	call to objc_read_weak of a __weak return ivar.
	(objc_add_internal_ivar): For 'weak' property, declare inserted 'ivar' as
	__weak.
	(finish_class): Diagnose if 'weak', 'bycopy' and 'byref' are not mutually
	exclusive. On an existin 'ivar', make sure that it is declared weak.	
	
2006-07-13  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4625843
	* objc-act.c (objc_add_property_variable): Issue diagnostic if
	category's 'ivar' attribute does not include an ivar name.
	(synth_module_prologue): Generate protocol qualified type for
	object_getProperty_bycopy and object_setProperty_bycopy.
	(finish_class): For categories, look for 'ivar' name in its
	class.

2006-07-12  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4625635
	* objc-act.c (objc_add_property_variable): Make 'byref' the dafault
	attribute for pointer-to-object properties.

2006-07-11  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4623423
	* objc-act.c (objc_type_valid_for_messaging): 'Class' is a valid
	selector type as well.

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

	Radar 4398221
	* objc-act.c (lookup_and_install_protocols): Takes a new
	argument and warns on use of incomplete protocol in a 
	class definition.
	(objc_get_protocol_qualified_type, 
	 start_class, start_protocol): Pass the extra argument 'true' 
	or 'false' in call to lookup_and_install_protocols.

2006-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4585769
	* objc-act.h: Variety of new global declarations.
	* objc-act.c (OBJC_VERSION): Bump version to 7.
	(ivar_bytepos_cmp): New call back routine for qsort.
	(objc_build_aggregate_ivar_layout): New routine to compute
	byte offset position of 'gc' scannable and 'gc' skipped
	ivar fields.
	(objc_build_ivar_layout): New routine to build the layout map of
	'gc' skipped and scanned ivar fields. 
	(build_objc_protocol_extension_template): New.
	(generate_objc_protocol_extension): New.
	(build_objc_class_ext_template): New.
	(generate_objc_class_ext): New.
	(synth_module_prologue): Moved build of "struct _prop_list_t*" type
	uncoditional.
	(generate_v2_protocol_references): Type of "isa" is now
	"struct _objc_protocol_extension*".
	(generate_method_descriptors): takes on a new argument used to
	generate "optional" method descriptors.
	(generate_protocol_references): Calls generate_method_descriptors with
	extra argument.
	(generate_protocols): Build "objc_protocol_extension" metadata.
	(build_protocol_initializer): Set the "isa" field of objc_class to
	"_objc_protocol_extension" metadata.
	(build_category_template): New fields added to "objc_category". They are
	objc_category.size and objc_category.instance_properties.
	(build_v2_class_template): objc_class has two new fields 
	objc_class.ivar_layout and objc_class.ext	
	(build_class_template): Accomodate build of these two new
	fields.
	(build_category_initializer): Initialize the two new field for
	"objc_category".
	(build_shared_structure_initializer): Takes new arguement for the
	new field objc_class_ext addded to objc_class.
	Calls objc_build_ivar_layout to get the tree to fill in objc_class.ivar_layout.
	Initializes objc_class.objc_class_ext.	
	(generate_category): Pass UOBJC_V2_PROPERTY_decl to build_category_initializer.
	(generate_shared_structures): Pass extra argument to build_shared_structure_initializer.
	(generate_v2_protocols): Pass extra argument to build_protocol_initializer.
	(finish_objc): Generate declaraton for "objc_class_ext" metadata.
	Call generate_v2_property_tables in default (current) abi.
		
2006-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4577849
	* objc-act.c: (encode_protocol_list): New routine to encode
	protocol list.
	(encode_pointer): Call encode_protocol_list.

2006-06-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4606233
	* objc-act.c: (really_start_method): Remove check for missing
	attribute on @implementation methods.

2006-06-26  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4591909
	* objc-act.h: New declarations to supprot the new
	property spec.
	* objc-act.c: (objc_set_property_attr): Changed to support
	new attributes and change in the 'ivar' attribute spec.
	(objc_add_property_variable): Ditto.
	(objc_add_property_variable): Changed to support the new attribute
	semantics and issue a variety of errors for their mis-use.
	(objc_v2_encode_prop_attr): Encoding of attributes had changed.
	(objc_v2_merge_property): Use to be called objc_v2_merge_dynamic_property.
	(synth_module_prologue): Added declaration of bycopy and byref objc2
	library calls.
	(objc_gen_one_property_data): Removed generation of internal 'ivar'.
	(objc_build_getter_retval): New.
	(objc_synthesize_getter): Call objc_build_getter_retval to get the getter's
	ivar.
	(objc_build_setter_stmt): New.
	(objc_synthesize_setter): call objc_build_setter_stmt.
	(objc_gen_property_data): Do the merge of class's property
	list into the implementation first.
	(objc_add_internal_ivar): New.
	(finish_class): A variety of semantics check for the new
	and improved property attributes.
		
006-06-24 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4591756
	* objc-act.c (objc_build_weak_read): Pass address of 'id' expr
	to objc_read_weak.
	(objc_remove_weak_read): dereference 'exp'.
	(objc_strip_off_indirection): New.
	(objc_generate_write_barrier): Strip off tree
	added in objc_remove_weak_read.
	(build_next_objc_exception_stuff): Type of objc_read_weak is now
	objc_read_weak(*id).

2006-06-12 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4582997
	* objc-act.c (is_property): Lookup property in the interface,
	not in its implementation.

2006-06-12 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4582204
	* objc-act.c (build_message_ref_translation_table): Initializer tree-list
	is fixed.

2006-06-12 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4581680
	* objc-act.c (objc_start_method_definition): Generate nonlazy section
	for 'hybrid' abi as well.

2006-06-08 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4359757
	* objc-act.h: Several declaration of new hash tables.
	* objc-act.c (hash_ident_lookup, hash_ident_enter): New. 
	(get_objc_string_decl): Replaces linear search with hash lookup.
	(add_objc_string): Ditto.
	(build_next_runtime_selector_reference): New. replaces 
	build_selector_reference to do hash lookup instead of
	linear search.
	(objc_finish_message_expr): Call the new 
	build_next_runtime_selector_reference.
	(hash_init): Initialize new hash tables.
	(class_method_hash_lookup): New routine to do a scope qualified
	hash lookup.
	(add_class_method_hash): New to add to methods to hash table.
	(fast_lookup_method): Replaces lookup_method to do hash look
	up of methods.
	(lookup_method_static): Call fast_lookup_method instead of
	lookup_method.
	(objc_add_method): Ditto.
	(check_methods): Ditto. Also LIST argument is removed.
	(check_protocol): Remove unneeded argument from check_methods
	calls.
	(finish_class): Ditto.

2006-06-09 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4292049
	* objc-act.c (objc_generate_write_barrier): Turn on warning on pointer
	arithmatic of gc objects.

2006-06-07 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4576123
	* objc-act.c (build_v2_property_table_initializer): Set/Reset
	generating_instance_variables.

2006-06-02 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4568791
	* objc-act.c (objc_method_inherited): New.
	(check_methods): Warn only if method is not
	declared in the inheritance hierarchy.
	(check_protocol, check_protocols): Take interface as
	new argument and pass it down to check_methods.

2006-05-31 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4563333
	* objc-act.c (objc_finish_foreach_loop): Set input_location to
	foreach's location

2006-05-31 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4564386
	* objc-act.c (objc_merge_proto_properties_in_class): New.
	(finish_class): Merge properties from protocol(s) of the
	class into the class.

2006-05-30 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4476365
	* objc-act.c (encode_type): Encode c++'s reference type.

2006-05-30 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4547918
	* objc-act.c (objc_finish_message_expr): Issue warning on sending
	message to a forward class declaration.

2006-05-25 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4561192
	* objc-act.c (objc_set_alignment_attribute):
	(build_class_list_address_table, build_category_list_address_table,
	build_protocol_list_address_table): Set the alignment attribute to
	align to array's element alignment.

2006-05-24  Mike Stump  <mrs@apple.com>

	* objc-act.c (JBLEN): Update for x86_64.

2006-05-23 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4559114
	* objc-act.h (PROTOCOL_IMPL_OBJ): New macro for 
	PROTOCOL_INTERFACE_TYPE nodes.
	* objc-act.c (generate_v2_property_tables): Takes a new argument to
	know if generating metadata for protocol's declared properties.
	(build_v2_protocol_reference): Changed name of last argument.
	For each protocol implementation, generate its meta-data.
	(generate_v2_protocols): Use the property meta-data name saved
	in its PROTOCOL_INTERFACE_TYPE node.
	
2006-05-23 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4558088 - revised
	* objc-act.c (objc_add_property_variable): Diagnose mismatched
	property declarations by calling comptypes.

2006-05-23 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4558088
	* objc-act.c (objc_add_property_variable): Diagnose mismatched
	property declarations.

2006-05-22 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4557598
	* objc-act.c (objc_add_property_variable): Fix typo.
	(synth_module_prologue): Declare objc_msgSend_fpret_fixup_rtp
	function.
	(objc_finish_message_expr): Use it.
	* objc-act.h: Declare umsg_fpret_fixup_decl.

2006-05-19 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4550413 (optional protocol)
	* objc-act.c (lookup_method_in_protocol_list): Also search for methods 
	in list of optional protocols.

2006-05-18 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4548636 (objc attributes on class)
	* objc-act.h (CLASS_ATTRIBUTES): New macro to access interface's
	attribute list.
	* objc-act.c (objc_warn_on_class_attributes): New.
	(objc_attach_attrs_to_type): New.
	(objc_start_class_interface): takes attributes as new argument
	and sets it to class's CLASS_ATTRIBUTES field.
	(build_private_template): Updates 'record' of the class with 
	unavailable/deprecated attributes.
	(add_category): Warn on use of deprecated class in declaring a new
	category.
	(start_class): Warn on use of a deprecated class as a super class.	

2006-05-17 Fariborz Jahanian <fjahanian@apple.com>

	radar 4551602
	* objc-act.c (continue_class): Use ggc_alloc_cleared to allocate
	and clear out 'struct imp_entry' objects.
	Change radar number 5433974 to 4533974 in apple local markers.

2006-05-15 Fariborz Jahanian <fjahanian@apple.com>

	radar 4529765
	* objc-act.c (objc_delta_format_args): New.
	* (objc_any_recognized_attribute): New.
	* (objc_start_method_definition): Warn on attribute decl.
	on method implementation.
	* (objc_decl_method_attributes): Call objc_any_recognized_attribute.
	
2006-05-10 Fariborz Jahanian <fjahanian@apple.com>

	radar 4180592
	* objc-act.c (objc_finish_message_expr): Check for error node.

2006-05-09 Fariborz Jahanian <fjahanian@apple.com>

	radar 4538105
	* objc-act.c (objc_finish_foreach_loop): Mark element 
	selector as being used.

2006-05-08 Fariborz Jahanian <fjahanian@apple.com>

	radar 4533107
	* objc/objc-act.c (lookup_property_in_list): Lookup
	further in main property list.

2006-05-08 Fariborz Jahanian <fjahanian@apple.com>

	radar 4540451
	* objc/objc-act.c (create_ivar_offset_name): Change ivar offset 
	symbol name.

2006-05-08 Fariborz Jahanian <fjahanian@apple.com>

	radar 4535676
	* objc/objc-act.c (objc_v2_get_class_super_reference,
	build_classlist_super_reference_decl,
	build_classlist_super_translation_table): New.
	(get_super_receiver): Build classlist_super_ref_chain or
	metaclasslist_super_ref_chain class list chain.
	(finish_objc): Build the class list table found in
	classlist_super_ref_chain/metaclasslist_super_ref_chain
	chains.
	* objc-act.h: (classlist_super_ref_chain, metaclasslist_super_ref_chain):
	New declarations.

2006-05-05 Fariborz Jahanian <fjahanian@apple.com>

	radar 4533974 - ObjC new protocol
	* objc/objc-tree.def (PROTOCOL_IMPLEMENTATION_TYPE): New tree node.
	* objc/objc-act.h: Bunch of new global decls and enums.
	* objc/objc-act.c (objc_add_to_protocol_list_chain,
	build_protocol_list_address_table, build_protocollist_translation_table,
	objc_v2_get_protocol_reference, build_protocollist_reference_decl): New.
	(objc_protocol_implementation): Top-level routine to implement new
	protocol meta-data generation syntax.
	(synth_module_prologue): Remove build of getProtocol_decl function.
	(build_v2_protocol_template): New 'version' field added to protocol_t
	table.
	(generate_v2_protocol_references): Takes a new argument to generate
	only the first protocol if argument is true.
	(build_protocol_initializer): Added initialization for 'version'
	field.
	(build_category_initializer): Fixed up a initializer type for the
	'protocol_list_ptr' field initialization which caused c++ to complain.
	(generate_v2_category): New argument addded to call to
	generate_v2_protocol_references.
	(generate_v2_shared_structures): Ditto.
	(build_v2_protocol_reference): Takes a new argument to generate extern
	or global variable for protocol meta-data table.	
	(generate_v2_protocols): Generate extern variables for protocol meta-data
	indirectly referenced in a generated protocol meta-data. Add generated 
	protocol meta-data to the list for later generation.
	(objc_build_protocol_expr): Generate new abi for @protocol(proto)
	expression.
	(start_class): For PROTOCOL_IMPLEMENTATION_TYPE install protocols
	to its list.
	(continue_class): Add protocol implementation to the to-be-implemented
	list.	
	(finish_class): Ignore PROTOCOL_IMPLEMENTATION_TYPE.
	(finish_objc): Generate meta-data table. Generate content of
	__protocol_list and __protocol_refs section.
			   
2006-05-01 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4531482
	* objc/objc-act.c (generate_objc_symtab_decl): Generate
	_OBJC_SYMBOLS metadata for hybrid abi.
	(finish_objc): Generate MODULE descriptor for hybrid abi.

2006-04-28 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4512786
	* objc/objc-act.c (objc_init_exceptions): Remove warning.

2006-04-26 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4523837
	* objc/objc-act.c (objc_build_getter_call): Restore 'receiver' 
	to its original tree in call tree.

2006-04-26 Fariborz Jahanian <fjahanian@apple.com>

	Radar 3803157 (method attributes)
	* objc/objc-act.h (METHOD_TYPE_ATTRIBUTES): New macro.
	* objc/objc-act.c (objc_decl_method_attributes): New.
	(objc_add_method_declaration): Process method's attribute.
	(objc_start_method_definition): Ditto.
	(build_objc_method_call): Inject method attribute into
	built function type.
	(build_v2_build_objc_method_call): Ditto.
	(objc_synthesize_getter): objc_start_method_definition takes
	an extra argument.
	(objc_synthesize_setter): Ditto.
	(really_start_method): Check for consistant attribute
	declaration on method decl. and method def.
	(objc_method_decl): New.

2006-04-19 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4517826
	* objc/objc-act.c (objc_build_getter_call): Check for null tree(s)
	before accessing their fields.

2006-04-12 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4506893
	* objc/objc-act.c (objc_setter_func_call): Set
	in_objc_property_setter_name_context.
	(objc_finish_message_expr): Issue proper error 
	when setter not found and only when property
	is used to call setter.

2006-04-13 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4512937
	* objc/objc-act.c (objc_build_foreach_components): Use an existing
	declaration of 'NSFastEnumerationState' if one is available.

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

	Radar 4506903
	* objc/objc-act.c (objc_build_getter_call): Lookup property in
	id<protocol>.property as well.

2006-04-12 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4507230
	* objc-act.c (objc_finish_message_expr): Don't warn on 
	calling the internal objc runtime routine.
	(objc_type_valid_for_messaging): New routine to check for valid
	objc object types.
	(objc_finish_foreach_loop): Check for invalid objc objects
	in foreach header.

2006-04-07 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4505126
	* objc-act.c (lookup_property, lookup_property_in_list,
	lookup_property_in_protocol_list): New.
	(objc_build_getter_call): Call lookup_property to find a property.
	Also fix a minor C* property bug uncovered.
	
2006-04-06 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4436866
	(Missing copies attribute)
	* objc-act.h (PROPERTY_COPIES): New field in property node.
	* objc-act.c (objc_set_property_attr): Set property_copies
	flag.
	(objc_add_property_variable): Update field PROPERTY_COPIES
	corresponding to 'copies' attribute.
	(objc_v2_encode_prop_attr): Ancode 'copies' attribute in
	attribute field of metadata.
	(objc_v2_merge_dynamic_property): Merge 'copies' attribute.
	
2006-04-04 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4498373
	(Metadata for objective-c properties)
	* objc-act.h (objc_v2_property_template, UOBJC_V2_PROPERTY_decl,
	prop_names_attr_chain, objc_prop_list_ptr): New global 
	declarations.
	* objc-act.c (build_v2_property_template, build_v2_property_list_template,
	generate_v2_property_tables, build_v2_property_table_initializer, 
	objc_v2_encode_prop_attr, generate_v2_property_list,
	objc_v2_merge_dynamic_property): New functions for property's
	meta-data generation.
	(string_section): prop_names_attr is the new enum for property
	name/attribute strings section.
	(objc_add_property_variable): Fix a latentbug to prevent crash on user
	error.
	(synth_module_prologue): Define a new type for _prop_list_t*.
	(build_objc_string_decl): Add property name/attributes to their own
	list.
	(add_objc_string): Add support for property name/attribute names. 
	(get_objc_string_decl): Add list of property name/attributes among
	those to search for.
	(generate_strings): Generate the property name/attribute data.
	(build_v2_protocol_template): Add the new field "properties"
	to 'struct protocol_t'.
	(build_protocol_initializer): Add the initializer for "properties"
	field.
	(build_v2_category_template): Add the new field "properties"
	to 'struct category_t'.
	(build_category_initializer): Add the initializer for "properties"
	field.
	(build_v2_class_template): Add the new field "properties"
	to 'struct class_ro_t'.
	(build_class_ro_t_initializer): Add the new field "properties"
	to 'struct class_ro_t'.
	(generate_v2_shared_structures): Fixed a latent bug.
	(check_methods): Don't issue error if synthesize declarations
	found in interface don't have an implementation.
	(objc_gen_property_data): Merege 'dynamic' properties into 
	class's implementation.
	(finish_class): Set the context for synthesized instance methods.
	(finish_objc): Call to generate_v2_property_tables to generate
	property metadata.

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

	Radar 4494634
	* objc-act.c (objc_build_string_object): Call build1 directly.

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

	Radar 4494634
	* objc-act.c (objc_build_string_object): Suppress strict-alias
	warning when converting to type 'id'.

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

	Radar 4133425
	* objc-act.c (objc_diagnose_private_ivar): New.

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

	Radar 4436866
	* objc-act.c (objc_gen_one_property_data): New.
	(objc_gen_property_datae): New.
	(objc_synthesize_getter): New.
	(objc_process_getter_setter): New.
	(objc_synthesize_setter): New.
	(objc_build_property_ivar_name): New.
	(objc_build_property_setter_name): New.
	(objc_v2_build_setter_call): New.
	(objc_setter_func_call): New.
	(build_property_reference): New.
	(match_proto_with_proto): New.
	(is_property): New.
	(finish_class): Generate what needed for property in class
	and category.
	(comp_proto_with_proto): Bulk of code moved to match_proto_with_proto.
	(objc_lookup_ivar): Added support to lookup property name.
	* objc-tree.def (PROPERTY_DECL): New tree node.
	* objc-act.h: Several new macros to access various @property 
	fields.

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

	Radar 4486614
	* objc/objc-act.c (objc_generate_weak_read): Don't attempt
	to generate 'weak' barriers in templates.

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

	Radar 4466530
	* objc/objc-act.c (synth_module_prologue): -fobjc-direct-dispatch 
	should be a no-op on ppc64

2005-03-09 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4457381
	* objc/objc-act.c (objc_finish_message_expr): Look for message in
	@class's protocol list.

2005-03-08 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4468456
	* objc/objc-act.c (objc_finish_foreach_loop): 'continue' label belongs 
	to current (inner) while-do loop.

2005-02-28 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4156731
	* objc/objc-act.c (gen_type_name_0): Handle Error reporting of
	nameless types.

2005-02-28 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4441049
	* objc/objc-act.c (objc_v2_bitfield_ivar_bitpos): New routine to
	compute ivar bitfield bit position from start of its starting byte.
	(ivar_offset_ref): ivar bitfield byte position recomputed.

2006-02-15   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4439126
	* objc/objc-act.c (objc_finish_file): call cp_finish_file before
	genertating any meta-data so all instantiation have taken place
	(some metadata (such as selectors) may go missing otherwise).

2006-02-15   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4441551
	* objc/objc-act.c (diagnose_selector_cast): New function definition.

2006-02-14   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4445586
	* objc/objc-act.h: PROTOCOL_LANG_SLOT_ELTS has two new slots.
	(PROTOCOL_OPTIONAL_CLS_METHODS, PROTOCOL_OPTIONAL_NST_METHODS): Renamed to
	reflect the slot they belong to.
	* objc/objc-act.c ((PROTOCOL_OPTIONAL_CLS_METHODS, 
	PROTOCOL_OPTIONAL_NST_METHODS): Ditto.
	
2006-02-14   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4441049
	* objc/objc-act.h: ivar_offset_hash_list new decl.
	* objc/objc-act.c (hash_name_enter, hash_name_lookup): New functions.
	(create_global_decl, create_extern_decl): Use the hash tables for looking
	up the global/extern variables used to represent various meta-data.
	(build_classlist_translation_table, generate_v2_category): Create a 
	new extern variable not global.
	(objc_generate_weak_read): For C++ template expressions type
	is NULL. Ignore such expressions.
	(objc_v2_build_ivar_ref): This routine cannot handle bitfields.
	(build_v2_ivar_t_template, ivar_offset_ref): Use correct type for
	field offsets which match that of the middle-end.
	(hash_init): New hash table initialization.	

2006-02-08   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4437670 (new abi stuff)
	* objc/objc-act.c: Use internale names for pre-defined types
	for the new abi.
	(synth_module_prologue): Declare new builtin function objc_getProtocol.
	(objc_finish_message_expr): Use the new API for @protocol usage.
	(generate_v2_protocol_list): Use correct protocol list name.
	(build_v2_protocol_reference): Ue correct protocol reference name.
	
2006-02-3   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4431864
	* objc/objc-act.c (objc_set_global_decl_fields): New routine to set 
	the flags for a new global declaration.
	(start_var_decl): Call objc_set_global_decl_fields to set the global flags.
	(create_global_decl): Use the pre-existinig extern declaration, if one 
	exists, to declare the new global declaration.

2006-02-02   Fariborz Jahanian <fjahanian@apple.com>

	Radar 4426814
	* objc/objc-act.h (objc_assign_weak_decl, objc_read_weak_decl): New globals
	for two weak function calls; objc_read_weak and objc_assign_weak.
	* objc/objc-act.c (objc_build_weak_read, objc_build_weak_read,
	objc_generate_weak_read, objc_remove_weak_read): New functions defs.
	(objc_build_global_assignment): Takes an added argument for generation
	of 'strong' or 'weak' assignment calls.
	(objc_is_gcable_type): Now returns 1(strong), -1(weak) or 0(neither).
	(objc_is_strong_p): Now returns 1(strong), -1(weak) or 0(neither).
	(objc_generate_write_barrier): Is not capable of generating both
	weak and strong write barriers.
	(build_next_objc_exception_stuff): Declare the new functions.

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

	Radar 4386773
	* objc/objc-act.c (objc_set_method_opt): New function.
	(objc_start_protocol, objc_finish_interface): Reset 
	objc_method_optional_flag flag.
	(objc_add_method_declaration): Pass on the new 
	flag to objc_add_method.
	(objc_add_method): Add optional methods to new chain in
	the protocol class.
	* objc/objc-act.h (CLASS_OPTIONAL_CLS_METHODS, 
	CLASS_OPTIONAL_NST_METHODS): New macros accessing a protocol
	class's optional method chains.
	
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.

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

	Radar 4310884
	* objc/objc-act.c (objc_build_struct): Rebuild TYPE_LANG_SPECIFIC for
	new class type after call to finish_struct.

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

	Radar 4360146
	* objc/objc-act.h: (metaclasslist_ref_chain): New global declaration.
	* objc/objc-act.c (build_v2_method_list_template): New routine to
	declare "struct method_list_t".
	(objc_v2_get_metaclass_reference): New routine to build list
	of metaclass references.
	(objc_build_internal_classname): Takes new argument to build
	either internal class or metaclass name.
	(synth_module_prologue, objc_get_class_reference, 
	objc_build_protocol_expr, continue_class): Generate new meta-data in 
	hybrid abi as well.
	(init_v2_def_list): Routine is removed.
	(init_objc_symtab): New abi dependent code is removed since objc_symtab is
	not generated in new and hybrid abi.
	(forward_declare_categories): For hybrid abi generate both new and old 
	category meta-data names.
	(generate_objc_symtab_decl, objc_v2_build_ivar_ref, 
	build_private_template, build_super_template, synth_id_with_class_suffix): Add 
	test for hybrid abi.
	(build_classlist_translation_table): New argument to check for generation
	of metaclass reference table.
	(build_method_list_template): Remove dependency on abi flag.
	(generate_v2_dispatch_tables, generate_v2_method_descriptors): Call 
	build_v2_method_list_template.
	(get_super_receiver): For super call in class method add metaclass name to 
	reference chain.
	(finish_objc): Generate new and old metadata/declarations for hybrid abi. 
	Build metaclass reference table.

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

	Radar 4294910
	* objc/objc-act.c (build_objc_fast_enum_state_type, 
	objc_create_named_tmp_var, objc_finish_foreach_loop, 
	objc_build_foreach_components): New functions.
	(objc_build_component_ref): Made global.
	(synth_module_prologue): Define 'struct __objcFastEnumerationState'
	type and objc_enumerationMutation functions.
	* objc/objc-act.h (objc_fast_enum_state_type, 
	objc_enum_mutation_decl): New declarations.
	
2006-01-18 Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146
	* objc/objc-act.c (objc_add_to_class_list_chain,
	build_class_list_address_table, objc_add_to_category_list_chain,
	build_category_list_address_table, 
	objc_add_to_nonlazy_category_list_chain, 
	objc_add_to_nonlazy_class_list_chain): New functions.
	(objc_start_method_definition): Insert declaration of class 
	method "load" in one of the __nonlazy_class or __nonlazy_category 
	lists.
	(forward_declare_categories): Change name of category meta-data so
	it ends up in its correct section.
	(synth_forward_declarations): Comment changed.
	(generate_v2_dispatch_tables): Correct name of meta-data
	table for category methods.
	(generate_v2_category): Add to list of pointers in 
	__category_list section.
	(generate_v2_shared_structures): Fix the bug whereby offset of 
	first ivar was not computed correctly. 
	(synth_id_with_class_suffix): Fix the problem with duplicate category 
	symbol names.
	(finish_objc): Generate various new symbol lists. 
	* objc/objc-act.h: Assortment of new global declarations.
		
2006-01-10 Fariborz Jahanian <fjahanian@apple.com>

       Radar 4404766
       * objc/objc-act.c (JBLEN): define 64bit version of this macro as well.

2005-12-22  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146
	* objc/objc-act.c (generate_v2_ivar_lists): Remove generation of class 
	variabe offset for the root of inheritance in new abi.

2005-12-21  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146
	* objc/objc-act.c (create_hidden_decl): New.
	(ivar_offset_ref): Visibility of private ivar offset 
	variables must be "hidden".

2005-12-21  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146
	* objc/objc-act.c (objc_is_ivar): Perform correct name lookup for
	ivar names when generating ivar offset variables.
	(finish_objc): Don't generate objc_module meta-data in new abi.
	(generate_objc_symtab_decl): Don't generate objc_symtab meta-data 
	in new abi.
	(generate_v2_ivar_lists): Change names of class and instance ivars 
	in new abi so they end up in .data section.
	(generate_v2_dispatch_tables): Change names of method meta-data
	in new abi so they end up in .data section.
	(generate_v2_method_descriptors): Ditto.

2005-12-16  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146
	* objc/objc-act.c (ivar_offset_ref): Uniquify ivar offset variable 
	names not based on offect value but based on their name.
	(generate_v2_ivar_lists): Use OBJC_TYPE_NAME macro so c++ works as well.
	(generate_v2_protocol_list): Use objc_v2_protocol_template and not
	objc_protocol_template.
	(build_class_ro_t_initializer): Type of class_ro_t.baseProtocols
	initializer must be protocol_list_t*.
	(generate_v2_protocols): Type of protocol_t.protocol_list 
	initizlier is protocol_list_t *.

2005-12-15  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4229905
	* objc/objc-act.c (objc_compare_types): New.

2005-12-09  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146

	* objc/objc-act.h (PROTOCOL_LANG_SLOT_ELTS): Bump it by one.
	(PROTOCOL_V2_FORWARD_DECL): Correct its definition.
	(OCTI_V2_CAT_TEMPL): New definition.
	(objc_v2_category_template): New declaration.

	* objc/objc-act.c (OBJC_VERSION): Internal version number is 10
	for objc abi version 2.0.
	(build_classlist_reference): This function is removed.
	(synth_v2_forward_declarations): New
	(init_v2_def_list): New
	(objc_v2_get_class_reference): New
	(objc_build_internal_classname): New
	(build_v2_category_template): New
	(generate_v2_category): New
	(synth_module_prologue): Now build all built-in messaging functions for
	abi version 2.0 as well.
	Build new protocol_t type for abi version 2.0.
	(init_objc_symtab): For abi vesion 2.0, initialize _objc_symtab.defs field 
	to the new definition of ivars.
	(forward_declare_categories): For abi version 2.0 declare a new object
	for category metadata.
	(build_classlist_reference_decl): New name for visible pointer to class_t meta
	data for abi version 2.0.
	(build_classlist_translation_table): Build initializers for each externally 
	visible class reference.
	(objc_get_class_reference): Call objc_v2_get_class_reference to add a new 
	visible class reference to the classlist_ref_chain chain.
	(objc_v2_build_ivar_ref): Remove call to objc_is_public to avoid duplicate
	error reporting.
	(objc_v2_build_ivar_ref): Preserve type of the field on the new abi's
	ivar reference expression.
	(synth_forward_declarations): Remove version 2.0 specfic code (it now goes 
	in its own routine).
	(build_super_template): Build the second field, renamed to "cls", for abi version
	1.0 or 2.0 with different types.
	(ivar_offset_ref): New logic to avoid duplicate generation of offset variables
	with identical offset values.
	(build_v2_ivar_list_initializer): Skip over unnamed bitfields.
	(generate_v2_shared_structures): Remove call to build_classlist_reference.
	(receiver_is_class_object): Search 'classlist_ref_chain' or 'cls_ref_chain'
	list, dependending on the abi, for the identifier node for the referenced class. 	
	(objc_finish_message_expr): New messaging is also generated for abi version 2.0.
	(generate_v2_protocols):  Add class name to the list of visible classes whose 
	metadata address must be exported.
	(objc_build_protocol_expr): When generating @protocol expression, for abi version 2.0,
	the version 2.0 protocol meta-data need be generated.
	(continue_class): Separate the work depending on abi version.
	(objc_declare_protocols): Initialize PROTOCOL_V2_FORWARD_DECL.
	(start_protocol): Ditto.
	(get_super_receiver): In code generation for [super self], set super_t.cls field properly
	for abi version 2.0.
	(finish_objc): Top-level meta-data generation routine. Depending on abi version, call the
	version 1.0 or version 2.0 version of routines for various meta data generation.
	
2005-12-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4360146

	* objc/objc-act.c (objc_is_ivar, create_ivar_offset_name):
	New utility routines.
	(objc_v2_build_ivar_ref): Main routine to generate the new ivar
	reference code.
	(create_extern_decl): Modified to generate unique 'extern' variable
	declarations at file scope.
	(synth_module_prologue):Type of UOBJC_V2_VTABLE_decl is corrected.
	(ivar_offset_ref): Use create_ivar_offset_name to create name for ivar
	offset variable. Create global offset variables for public/protected
	ivars.
	(generate_v2_shared_structures): Miscellanous type correction and
	cleanups.
	(build_ivar_reference): For ivar references call objc_v2_build_ivar_ref
	to generate ivar references using ivar offset variable.

2006-05-24  Mike Stump  <mrs@apple.com>

	* objc-act.c (JBLEN): Update for x86_64.

2006-05-18  Stuart Hastings  <stuart@apple.com>

	Radar 4385273
	* gcc/objc/objc-act.c (objc_build_synchronized): Update JBLEN
	for 64-bit.

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

	Radar 4399973
	Radar 4327263
	* objc/objc-act.c (init_module_descriptor): Remove file name
	from module descriptors.

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.
	
2006-02-07  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4219590
	* objc/objc-act.c (objc_start_method_definition): Initialize break/continue
	labels.

2005-11-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4349690

	* objc/objc-act.c (update_var_decl): New.
	(generate_strings, generate_shared_structures): Reuse old decl 
	and update it.
	(generate_category): A new argument added so the old
	decl can be updated and used.
	
2005-11-29  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4349670

	* objc/objc-act.c (init_objc_symtab): Use 'short' type for constant
	initializer initializing a 'short' field.

2005-11-18  Fariborz Jahanian <fjahanian@apple.com>

	objc new meta-data definitions - part 2

	* objc/objc-act.c (build_v2_ivar_t_template): New
	(build_v2_ivar_list_t_template): New
	(generate_v2_ivar_lists): New
	(build_v2_ivar_list_initializer): New
	(generate_v2_ivars_list): New
	(generate_v2_dispatch_tables): New
	(ivar_offset_ref): New
	(generate_v2_ivar_offset_ref_lists): New
	(generate_v2_protocol_list): New
	(build_v2_protocol_reference): New
	(generate_v2_protocol_references): New
	(generate_v2_protocols): New
	(build_v2_descriptor_table_initializer): New
	(generate_v2_method_descriptors): New
	(synth_module_prologue): Declare type 'struct ivar_list_t*'
	(build_message_reference_decl): Use a new indexing for building
     	message_ref names.
	(generate_descriptor_table): Added the 'newabi' arg to initilize the
	'entsize' field for 'method_list_t' meta data.	
	(build_protocol_initializer): Added the 'newabi' arg so as not
	to initialize the non-existing 'isa' field for 'struct protocol_t'
	meta data in the new abi.
	(build_method_list_template): For new abi add 'entsize' field to
	'struct method_list_t'.
	(generate_dispatch_table): Added the 'newabi' argument so for new
	abi we set the 'entsize' field of 'struct method_list_t'.	
	(generate_protocol_list): Removed the 'newabi' argument and its use.
	New abi now has its own generate_v2_protocol_list routine.
	(generate_v2_shared_structures): Call generate_v2_protocol_references
	and generate_v2_protocol_list. 
	(finish_objc): Generate new ivar-list, method-list, protocol-list
	meta data.

	* objc/objc-act.h: Assortment of new macro and global variable declarations.

2005-11-14  Fariborz Jahanian <fjahanian@apple.com>

	objc new messaging - part 3

	* objc/objc-act.c (build_message_reference_decl): New
	(build_selector_messenger_reference): Declare the variable
	with type "struct message_ref_t" for later initialization.
	(build_message_ref_translation_table): Initialize the 
	variable of type "struct message_ref_t" with the {message_name,
	selector}.
	(objc_copy_to_temp_side_effect_params): Fix gcc_assert(...).

2005-11-11  Fariborz Jahanian <fjahanian@apple.com>

	objc new messaging - part 2

	* objc/objc-act.c (build_selector_messenger_reference): New
	(build_message_ref_translation_table): New
	(objc_copy_to_temp_side_effect_params): New
	(objc_create_temporary_var): New
	(build_message_ref_template): Reorder fields in message_ref_t
	struct for better code gen.
	(objc_finish_message_expr): Initialization of message_ref_t table
	is now done at link-time. Also, check conditions for object comparison
	with 'nil'. 
	(build_newabi_build_objc_method_call): Check for object being 'nil' before
	making the call to message handlers.
	(finish_objc): Generate 'struct message_ref_t' translation table.

	* objc/objc-act.h: Assortment of new macro and global variable declarations.

2005-11-08  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4330422

	* objc/objc-act.c (objc_non_volatilized_type): New

2005-11-07  Fariborz Jahanian <fjahanian@apple.com>

	objc new messaging - part 1

	* objc/objc-act.c (synth_module_prologue): Generate builtin function 
	decls for all messaging calls.
	(build_message_ref_template): Declare 'struct _message_ref_t' and
	'struct _super_message_ref_t' types.
	(generate_newabi_shared_structures): Fix reported bugs on 'instanceStart' 
	and 'ivars' fields of the class meta data.
	(get_arg_type_list): For new abi, select objc_newabi_super_selector_type or
	objc_newabi_selector_type for selector type.
	(objc_finish_message_expr): For new abi, generate new messaging run-time 
	calls.
	(build_objc_method_call): New.
	* objc/objc-act.h: Assorment of new defines and new global declaration in
	support of new messaging calls.

2005-11-01  Fariborz Jahanian <fjahanian@apple.com>

	objc new meta-data definitions - part 1

	* objc/objc-act.c (create_global_decl): New
	(create_extern_decl): New
	(build_classlist_reference_decl): New
	(build_classlist_translation_table): New
	(build_newabi_protocol_template): New
	(build_newabi_class_template): New
	(newabi_append_ro): New
	(build_class_t_initializer): New
	(generate_newabi_shared_structures): New
	(synth_module_prologue): Declare IMP type objc_imp_type
	and use it as needed.
	Declare new globals and call build_newabi_protocol_template(...) when
	-fobjc-newabi is specified.
	(build_private_template): Save type of an Interface in CLASS_TYPE field.
	(generate_protocol_list): New argument added.
	(synth_forward_declarations): With -fabj-newabi build new class and metaclass 
	"class_t" types.
	(continue_class): Save class and metaclass declarations.
	(finish_objc): Restore global class and metaclass declarations.
	With -fobjc-newabi call generate_newabi_shared_structures(...).
	Also build classlist translation table if needed.
	* objc/objc-act.h (imp_entry): class_newabi_decl and meta_newabi_decl fields 
	added.	
	(enum objc_tree_index): New enumerators added.
	Several global variables declared.
	* config/darwin-protos.h (objc_classlist_section, objc_data_section): New declarations.
	* config/darwin.c (machopic_select_section): Added conditional calls to
	objc_classlist_section() and objc_data_section().
	* config/darwin.h: (objc_classlist_section, objc_data_section): New functions.
	(objc_section_init): New sections to initialize.
	
2005-10-10  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4301047

	* objc-act.c (encode_type): Remove the hack.

2005-10-17  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4290840

	* objc-act.c (objc_start_method_definition): Check for error_mark_node for
	the selector name and make a quick exit.

2005-10-12  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4291785

	* objc-act.c (objc_get_interface_ivars): New function.
	(objc_detect_field_duplicates): Ditto.
	(objc_collecting_ivars): New flag.
	(continue_class): Set and reset objc_collecting_ivars for context.
	* objc-act.h (TOTAL_CLASS_RAW_IVARS): New field for interface types.
	
2005-10-10  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4291099
	* objc-act.c (objc_generate_write_barrier): Add write-barriers for 
	c++'s ctor initializer list.

2005-10-07  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4204796
	* objc-act.c (objc_build_volatilized_type): Build 'volatilzed'
	types with proper attribute set and correctly.
	(objc_volatilize_decl): Remove unneeded code.
	(objc_type_quals_match): Use the new attribute to check on
	'volatilzed' type.
	(hash_init): removed unneeded code.
	
2005-10-04  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4278236
	* objc-act.c (objc_declare_class): Pick the right
	type tree.

2005-10-04  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4281748
	* objc-act.c (objc_check_global_decl): New

2005-10-07  Fariborz Jahanian <fjahanian@apple.com>

	radar 4292010
	* objc-act.c (objc_generate_write_barrier): Turn off gc-specific 
	warning till post chardonnay.

2005-10-06  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4280641
	* objc-act.c (TAG_MSGSEND_FPRET): New objc runtime call name.
	(synth_module_prologue): Build bultin function for this runtime
	function (x86 only).
	(build_objc_method_call): Call this runtime for methods returning
	floats and if not call to super receiver.
	* objc-act.h (OCTI_UMSG_FPRET_DECL): New definition.
	(umsg_fpret_decl): New definition.
	
2005-09-29  Ziemowit Laski  <zlaski@apple.com>

	Radar 4136489
	* objc-act.c (objc_is_gcable_type): Remove second parameter;
	handle __weak attribute.
	(objc_is_strong_p): New function.
	(objc_is_object_ptr): Check main variant of pointee.
	(objc_is_gcable_p): Hande __weak attribute.
	(objc_generate_write_barrier): For GC-able objects, always generate
	a strong-cast write barrier as a last resort, unless the object's
	type is marked __weak.

2005-08-23  Stuart Hastings <stuart@apple.com>
	    Ziemowit Laski  <zlaski@apple.com>

	Radar 4209854
	* objc-act.c (objc_decay_parm_type): New function.
	(get_arg_type_list): Decay types for all named arguments.
	(objc_push_parm): Rebuild the PARM_DECL if its type has
	been decayed.

2005-08-22  Ziemowit Laski  <zlaski@apple.com>

	Radar 4174166
	* objc-act.c (objc_compare_types): Compare function
	pointers; indicate success if the right-hand side has
	a return type that is covariant, and the argument types
	contravariant, with those of the left side.

2005-08-22  Ziemowit Laski  <zlaski@apple.com>

	Radar 4216500
	* objc-act.c (objc_get_protocol_qualified_type): When looking
	at a typedef, retrieve the precise type it describes (rather
	than merely looking up a class by name).

2005-07-20  Ziemowit Laski  <zlaski@apple.com>

	Radar 4136935
	* objc-act.c (pointee_is_readonly): New function.
	(encode_pointer, encode_aggregate_within, encode_type):
	Attempt to emulate GCC 3.3 when generating type encodings.

2005-07-18  Ziemowit Laski  <zlaski@apple.com>

	Radar 4175534
	* objc-act.c (objc_compare_types): A new silent comparison
	mode (-4), differing from regular comparison (-3) in that
	'false' is returned instead of issuing warnings.

2005-07-08  Ziemowit Laski  <zlaski@apple.com>

	Radar 4168740 (via mainline)
	* objc-act.c (objc_build_struct): Pass in an actual @interface
	instead of its name, and annotate the struct created (and all
	existing variants thereof) with the @interface.
	(objc_compare_types): Treat forward-declared ObjC classes
	as stand-alone (root) classes for purposes of type comparisons.
	(build_private_template): Move some code to objc_build_struct().

2005-07-07  Ziemowit Laski  <zlaski@apple.com>

	PR objc/22274
 	* objc-act.c (objc_build_string_object): For GNU-style constants,
	use the @interface type rather than the built-in type.

2005-07-05 Devang Patel  <dpatel@apple.com>

	Radar 4168086	
	* lang-specs.h: While making PCH, invoke as if -fsave-repository
	is used when -save-temps is not used.

2005-07-01  Ziemowit Laski  <zlaski@apple.com>

	Radar 4153181
	* objc-act.c (objc_build_volatilized_type): New function.
	(objc_volatilize_decl): Call objc_build_volatilized_type()
	instead of build_qualified_type().

2005-06-30 Devang Patel  <dpatel@apple.com>

	* lang-specs.h: While making PCH, invoke as if -fsave-repository
	is used.

2005-06-28  Ziemowit Laski  <zlaski@apple.com>

	Radar 4140824
	* objc-act.c (objc_build_struct): Save the TYPE_OBJC_INFO
	portion of TYPE_LANG_SPECIFIC info for all variants of
	a class before calling finish_struct(), and restore
	same TYPE_OBJC_INFO afterwards.

2005-06-22  Ziemowit Laski  <zlaski@apple.com>

	Radar 4154928
	* objc-act.c (objc_common_type): New function.

2005-06-21  Ziemowit Laski  <zlaski@apple.com>

	Radar 4149909
	* objc-act.c (objc_build_internal_const_str_type): New function.
	(check_string_class_template): Use objc_get_class_ivars() instead
	of TYPE_FIELDS() to retrieve ivar list.
	(AT_LEAST_AS_LARGE_AS): Check the size of each field's type rather
	than the field itself.
	(objc_build_string_object): Synthesize a "__builtin_ObjCString"
	type and use it to lay out compile-time string objects.
	* objc-act.h (OCTI_INTERNAL_CNST_STR_TYPE, internal_const_str_type):
	New.

2005-05-19  Ziemowit Laski  <zlaski@apple.com>

	Radar 4035492
	* objc-act.c (objc_build_struct, objc_derived_from_p,
	objc_build_component_ref, objc_copy_binfo, objc_xref_basetypes,
	objc_lookup_protocol, objc_compare_protocols, objc_volatilize_decl,
	encode_aggregate_fields, volatilized_hash, volatilized_eq,
	objc_compare_types, objc_type_quals_match):
	New functions.
	(DERIVED_FROM_P): New ObjC macro, corresponding to C++ macro
	of same name.
	(get_class_ivars): Add second parameter indicating if entire
	hierarchy is desired.
	(struct volatilized_type): New type.
	(volatilized_htab): New hash table.
	(objc_types_compatible_p, objc_comptypes): Remove functions.
	(synth_module_prologue): Do not initialize 'unused_list'.
	(objc_get_class_reference): Fix ObjC++ impedance mismatches.
	(objc_declare_alias): Implement as a typedef.
	(objc_substitute_decl, objc_gimplify_expr): Reformat.
	(objc_get_class_ivars): Adjust call to get_class_ivars().
	(next_sjlj_build_enter_and_setjmp, synth_forward_declarations,
	build_ivar_reference, get_super_receiver): Call
	objc_build_component_ref() instead of build_component_ref().
	(objc_begin_catch_clause): Use DERIVED_FROM_P() instead of
	objc_comptypes().
	(build_private_template): Call objc_build_struct() instead of
	start_struct() and finish_struct().
	(hash_init): Initialize volatilized_htab.
	(objc_is_public): Adjust calls to objc_get_ivars(); adjust
	ObjC++ impedance mismatches.
	(encode_aggregate_within): Streamline by calling
	encode_aggregate_fields().
	* objc-act.h (objc_types_compatible_p): Remove prototype.
	(OCTI_UNUSED_LIST, unused_list): Remove slot.
	* objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove.

2005-04-19  Ziemowit Laski  <zlaski@apple.com>

	Radar 4056870
	* objc-act.c (start_class): Traverse @compatibility_alias
	declaration when looking up super class; produce error
	message if super class only has a @class declaration.

2005-04-11  Ziemowit Laski  <zlaski@apple.com>

	Radar 4073569
	* objc-act.c (objc_finish_message_expr): When sending
	messages to classes that were _only_ forward-declared
	(via '@class'), do not issue "may not respond" to
	warnings.

2005-04-08  Ziemowit Laski  <zlaski@apple.com>

	Radar 4055183
	* objc-act.c (objc_rewrite_function_call): New function.

2005-03-11  Ziemowit Laski  <zlaski@apple.com>

	Radar 3995882
	* objc-act.c (objc_begin_try_stmt): When doing _setjmp()/
	_longjmp() EH, call objc_mark_locals_volatile().

2005-02-17  Ziemowit Laski  <zlaski@apple.com>

	Radar 4006978
	* objc-act.c (objc_is_public): Remove unneeded code.

2005-02-17  Ziemowit Laski  <zlaski@apple.com>

	Radar 3635843, 3922342
	* objc-act.c (OBJC_VERSION): Bump to '6' for the NeXT.
	(objc_is_gcable_type, objc_substitute_decl, 
	objc_build_ivar_assignment, objc_build_global_assignment,
	objc_build_strong_cast_assignment, objc_is_gcable_p,
	objc_is_ivar_reference_p, objc_is_global_reference_p,
	objc_generate_write_barrier): New functions.
	(TAG_ASSIGNIVAR, TAG_ASSIGNGLOBAL, TAG_ASSIGNSTRONGCAST,
	TAG_MSGSEND_FAST, TAG_ASSIGNIVAR_FAST, OFFS_MSGSEND_FAST,
	OFFS_ASSIGNIVAR_FAST): New macros.
	(synth_module_prologue): Synthesize 'objc_msgSend_Fast'
	function prototype.
	(build_next_objc_exception_stuff): Synthesize
	'objc_assign_ivar', 'objc_assign_ivar_Fast',
	'objc_assign_global' and 'objc_assign_strongCast'
	function prototypes.
	(build_objc_method_call): Call 'objc_msgSend_Fast'
	instead of 'objc_msgSend' if '-fobjc-direct-dispatch'
	has been specified.
	(finish_objc): Generate image info if '-fobjc-gc'
	has been specified.
	(generate_objc_image_info): Set a bit indicating if
	'-fobjc-gc' has been specified.
	* objc-act.h (OCTI_UMSG_FAST_DECL, OCTI_ASSIGN_IVAR_DECL,
	OCTI_ASSIGN_IVAR_FAST_DECL, OCTI_ASSIGN_GLOBAL_DECL,
	OCTI_ASSIGN_STRONGCAST_DECL): New enum slots.
	(umsg_fast_decl, objc_assign_ivar_decl, 
	objc_assign_ivar_fast_decl, objc_assign_global_decl,
	objc_assign_strong_cast_decl): New slot accessors.

2005-02-11  Ziemowit Laski  <zlaski@apple.com>

	Radar 3962013 (Part 2)
	* objc-act.c (objc_types_share_size_and_alignment): New
	function.
	(check_duplicates): Update comment.
	(comp_proto_with_proto): If types do not match, call
	objc_types_share_size_and_alignment() as a fallback in
	non-strict mode.

2005-02-11  Ziemowit Laski  <zlaski@apple.com>

	Radar 3978619
	* objc-act.c (should_call_super_dealloc): New variable.
	(objc_finish_message_expr): If calling [super dealloc],
	clear the should_call_super_dealloc variable.
	(start_method_def): If defining a 'dealloc' method in a
	non-root class, set the should_call_super_dealloc variable.
	(objc_finish_method_definition): Print a warning if
	the should_call_super_dealloc is set.

2005-02-10  Ziemowit Laski  <zlaski@apple.com>

	Radar 3982256
	* objc-act.c: Update copyright notice; include langhooks-def.h.
	(objc_types_compatible_p): New lang hook function.
	* objc-act.h: Update copyright notice.
	(objc_types_compatible_p): New prototype.
	* objc-lang.c: Update copyright notice.
	(LANG_HOOKS_TYPES_COMPATIBLE_P): Point at objc_types_compatible_p().

2005-02-08  Ziemowit Laski  <zlaski@apple.com>

	Radar 3987972
	* objc-act.c (objc_start_function): Reset
	'current_function_returns_value' and 'current_function_returns_null'
	global flags.

2005-01-30  Ziemowit Laski  <zlaski@apple.com>

	Radar 3962013
	* objc-act.c (comp_proto_with_proto): Add a STRICT parameter
	to allow for relaxed type comparisons.
	(check_duplicates): If '-Wno-strict-selector-match' is specified,
	do not warn about multiple method signatures if they differ only
	in their ObjC types.
	(add_method_to_hash_list, objc_add_method, really_start_method):
	Adjust calls to comp_proto_with_proto().

2005-01-27  Matt Austern  <austern@apple.com>

	Radar 3971445
	* objc-act.c (objc_finish_file): In Objective-C++ mode, set at_eof
	before calling instantiate_pending_templates. 

2005-01-17  Ziemowit Laski  <zlaski@apple.com>

	* objc-act.c (objc_get_class_reference): Move stray 
	APPLE LOCAL marker.

2005-01-17  Ziemowit Laski  <zlaski@apple.com>

	Radar 3955336
	* objc-act.c (objc_get_class_reference): In Objective-C++,
	make sure a type is declared in the global namespace before
	looking it up as an ObjC class.

2005-01-17  Ziemowit Laski  <zlaski@apple.com>

	Radar 3953044 (PR objc/19321)
	* objc-act.c (get_arg_type_list): Decay function arguments into
	pointers.
	(objc_push_parm): Likewise; bring PARM_DECL construction closer
	in line with what the C front-end does.
	(objc_get_parm_info): Call pushdecl() and finish_decl() on
	each PARM_DECL, like the C front-end does.
	(start_method_def): Remove redundant ARRAY_TYPE decay.
	(objc_start_function): Bring closer in line with what the
	C front-end does for functions.

2005-01-17  Ziemowit Laski  <zlaski@apple.com>

	Radar 3951689
	* objc-act.c (next_sjlj_build_enter_and_setjmp): For
	Objective-C++, convert _setjmp() argument to type the
	function expects.
	(objc_finish_try_stmt, objc_build_synchronized): Return
	the resulting statement	node.

2005-01-14  Mike Stump  <mrs@apple.com>

	Radar 3948135
	* lang-specs.h ("@objective-c"): Use cc1obj when -E is used so
	that -fzero-link is accepted.

2005-01-12  Ziemowit Laski  <zlaski@apple.com>

	Radar 3882153
	* objc-act.c (objc_finish_file): Do not synthesize metadata
	when generating a PCH file.

2005-01-11  Ziemowit Laski  <zlaski@apple.com>

	Radar 3918079
	* objc-act.c (OBJC_LOOKUP_CLASS, OBJC_LOOKUP_NO_SUPER): New
	flags.
	(lookup_method_static): Generalize third argument to indicate
	whether to search superclasses for a method.
	(really_start_method): When looking for matching method in
	the @interface, do not look in superclasses.

2005-01-06  Ziemowit Laski  <zlaski@apple.com>

	Radar 3925982
	* objc-act.c (objc_method_parm_type): Return the type found
	rather than its main variant.
	(encode_aggregate_within): Streamline util_obstack accesses;
	allow for records and/or pointers thereto to be const-qualified.

2005-01-03  Ziemowit Laski  <zlaski@apple.com>

	Radar 3926282 (PR objc/18971)
	* objc-act.c (get_arg_type_list, start_method_def): Decay
	array arguments into pointers.
	(gen_type_name_0): Learn to pretty-print array types.

2004-11-10  Ziemowit Laski  <zlaski@apple.com>

	Radar 3761423
	* objc-act.c (build_private_template): Return 'void';
	move fix for Radar 3261135 from continue_class().
	(objc_is_public): Robustify for use with ObjC++; examine
	"raw" ivars of the ObjC class instead of side-effected 
	fields of the underlying struct.
	(continue_class): Return "raw" ivar list instead of
	struct field list; move Radar 3261135 to
	build_private_template(), and call it.

2004-11-01  Ziemowit Laski  <zlaski@apple.com>

	Radar 2810013 (fix from mainline)
	* objc-act.c (objc_lookup_ivar): The new OTHER parameter
	contains the result of the ID lookup by the C or C++
	front-end; in class methods, use OTHER if it exists;
	in instance methods, use OTHER only if it is locally
	declared.

2004-10-27  Ziemowit Laski  <zlaski@apple.com>

	Radar 3854155
	* objc-act.c (generate_shared_structures): Add a CLS_FLAGS
	parameter whose value gets ORed into the INFO field of
	the class descriptor.
	(CLS_HAS_CXX_STRUCTORS): New metadata bit.
	(objc_generate_cxx_cdtors): Set flag in current imp_entry
	if either '-.cxx_construct' or '-.cxx_destruct' were
	synthesized...
	(continue_class): ...after initially clearing it herre.
	(finish_objc): Adjust call to generate_shared_structures(),
	passing in CLS_HAS_CXX_STRUCTORS for classes with non-POD
	ivars.
	* objc-act.h (struct imp_entry): New has_cxx_cdtors field.

2004-10-26  Ziemowit Laski  <zlaski@apple.com>

	Radar 3833116 (fix from mainline)
	* objc-act.c (finish_class): Do not synthesize bogus
	'extern objc_object *_Foo;' declarations for @interface Foo.

2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

	Radar 3845826 (PR objc/17923)
	* objc-act.c (objc_build_string_object): Create a CONST_DECL
	for the NeXT runtime case.

2004-10-21  Ziemowit Laski  <zlaski@apple.com>

	Radar 3540965
	* objc-act.c (objc_generate_cxx_ctor_or_dtor,
	objc_generate_cxx_cdtors): New functions.
	(TAG_CXX_CONSTRUCT, TAG_CXX_DESTRUCT): New macros.
	(objc_finish_implementation): Call objc_generate_cxx_cdtors()
	if -fobjc-call-cxx-cdtors has been specified.
	(add_instance_variable): Emit different diagnostics for
	-fobjc-call-cxx-cdtors than for -fno-objc-call-cxx-cdtors.

2004-10-13  Ziemowit Laski  <zlaski@apple.com>

	Radar 3677258
	* objc-act.c (add_class): Add a 'name' parameter, and point it
	back at 'class' via IDENTIFIER_INTERFACE_VALUE accessor.
	(lookup_interface): Look in IDENTIFIER_INTERFACE_VALUE accessor
	instead of searching for class in a list.
	(start_class): Adjust calls to add_class().
	* objc-act.h (IDENTIFIER_INTERFACE_VALUE): Reformat.
