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-20  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-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-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-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-03-28 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-27 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-19  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4947014 - objc atomic property (minor build fix up).
	(objc_synthesize_new_getter, objc_synthesize_new_setter): Use
	targetm.calls.return_in_memory instead of RETURN_IN_MEMORY.

2007-03-19  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-15 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-13 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-13  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-09  Fariborz Jahanian <fjahanian@apple.com>
	
	Radar 5025001 (tweak)
	* objc-act.c (objc_build_struct): Set DECL_C_BIT_FIELD new field.

2007-03-09  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-02-26  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-02-21  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-02-20  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-02-19  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-02-16  Fariborz Jahanian <fjahanian@apple.com>

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

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

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

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

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

2007-02-13  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-02-13  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-02-12  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-02-08  Jon Ziegler <jonz@apple.com>

	Revert patch for Radar 4964338 (from 1/30/2007)

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

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

2007-02-08  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-02-01  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-01  Fariborz Jahanian <fjahanian@apple.com>

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

2007-02-01  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-01-30  Fariborz Jahanian <fjahanian@apple.com>

        Radar 4964338
	* objc-act.c (generate_objc_image_info): Generate 
	L_OBJC_IMAGE_INFO symbol in the style of 4.2 gcc.

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

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

2007-01-26  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-01-26  Fariborz Jahanian <fjahanian@apple.com>

	Radar 4951324 - revised.
	* 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-01-26  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-01-26  Fariborz Jahanian <fjahanian@apple.com>

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

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

	Radar 4951324
	* objc-act.c (init_UOBJC2_EHTYPE_decls): New to
	declare UOBJC2_EHTYPE_VTABLE_decl and UOBJC2_EHTYPE_id_decl.
	(objc2_eh_runtime_type): Call init_UOBJC2_EHTYPE_decls.
	(build_objc_exception_stuff): Delete declaration of
	UOBJC2_EHTYPE_VTABLE_decl and UOBJC2_EHTYPE_id_decl.

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

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

2007-01-23  Fariborz Jahanian <fjahania@apple.com>

	Radar 4923634
	* objc-act.c (finish_objc): Use correct value for objc2's
	CLS_HAS_CXX_STRUCTORS flag.
	
2007-01-22  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-01-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-01-10  Fariborz Jahanian <fjahania@apple.com>

	Radar 4894756 - Part 8

	* 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-01-04  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-01-03  Fariborz Jahanian <fjahania@apple.com>

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

2007-01-03  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.

2006-12-19  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-15  Fariborz Jahanian <fjahania@apple.com>

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

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

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

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-08  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-06  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-05  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-11-30  Fariborz Jahanian <fjahania@apple.com>

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

2006-11-29  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-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-16  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-11-15  Fariborz Jahanian <fjahania@apple.com>

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

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.
