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.
