2007-08-08 Fariborz Jahanian Radar 5389292 * objc-act.c (objc_declare_property_impl): For ivar decl. get the underlying bitfield type for comparison. 2007-08-07 Fariborz Jahanian Radar 5390587 * objc-act.c (objc_build_property_reference_expr): Preserve the original receiver.property_name information. (objc_resolve_build_property_setter_name): Get 'setter' name from original property name. (objc_finish_message_expr): return error_mark_node on error. (finish_class): Set property context field only when new getter is introduced (but not when existing one is found). 2007-07-31 Fariborz Jahanian Radar 5259868 * objc-act.c (objc_build_ivar_layout): Compress ivar layout nibbles if can. 2007-07-27 Fariborz Jahanian Radar 3742561 * objc-act.h (objc_memmove_collectable_decl): New declaration * objc-act.c (objc_build_memmove_collectable): New (objc_aggr_type_strong): New (objc_generate_write_barrier): Generate write barrier call for structs holding object pointers (or __strong pointers). (build_next_objc_exception_stuff): Generate the write barrier function declaration. 2007-07-24 Fariborz Jahanian Radar 5355344 * objc-act.c (cp_objc_protocol_id_list): New 2007-07-17 Fariborz Jahanian Radar 5338634 * objc-act.c (finish_class): Fix check for name conflict between property name and its setter name. 2007-07-16 Fariborz Jahanian Radar 5333233 * objc-act.c (generate_v2_shared_structures): If class has no 'ivar', set 'field' to class's hiden field (for its super class). 2007-07-13 Fariborz Jahanian Radar 5277239 * objc-act.c (lookup_method_static): Takes a new argument. (objc_property_access_info): Now recognizes 'receiver' when it is a class object. (objc_build_property_reference_expr): Can now build property reference expression for class-name.class-method syntax as well. (objc_build_getter_call): Can now build method-call expression from property reference expression. (objc_resolve_build_property_setter_name): Can now build a setter name (which should be a class method) for a property dot-syntax used on a class object. (objc_finish_message_expr): Add argument in call to lookup_method_static. (really_start_method): Ditto. (lookup_method_static): Has a new argument which when true only finds class methods. 2007-07-10 Fariborz Jahanian Radar 5285911 * objc-tree.def (OBJC_PROPERTY_REFERENCE_EXPR): New code tree. * objc-act.c (objc_property_access_info): New (objc_build_property_reference_expr): New (objc_property_reference_expr): New (objc_property_call): Removed (objc_v2_build_setter_call): Removed (objc_v2_build_incr_decl_setter_call): Removed (objc_build_getter_call): Revised and greatly simplified. (objc_build_setter_call): Revised and greatly simplified. (objc_build_incr_decr_setter_call): Revised and greatly simplified. (objc_gimplify_expr): Build getter for OBJC_PROPERTY_REFERENCE_EXPR tree before gimplification. 2007-06-29 Fariborz Jahanian Radar 5082000 * lang-specs.h (print-objc-ivar-layout): Add * objc-act.c (total_type_elements): New (OUTPUT_LAYOUT_BYTE): New macro (adjust_max_layout_buf_size): New (objc_build_aggregate_ivar_layout): Add support to handle layout for ivar of array type. (objc_build_ivar_layout): Modified to support dynamic buffer allocation and printing of gc ivar layout on demand. 2007-06-29 Fariborz Jahanian Radar 5251019 * objc-act.c (objc_build_ivar_layout): ivar layout nibble string must include count of words to skip at the end. 2007-06-29 Fariborz Jahanian Radar 5276085 * objc-tree.def (OBJC_WEAK_REFERENCE_EXPR): New tree code. (objc_tree_is_weak_expr): New routine to decide if expression is 'weak' reference. (objc_build_weak_reference_tree): New routine to build a 'weak' reference tree. (objc_weak_reference_expr): New routine to return the 'weak' reference expression tree. (objc_synthesize_getter, objc_synthesize_new_getter): Call objc_build_weak_reference_tree. (objc_generate_weak_read): Removed. (objc_remove_weak_read): Removed. (objc_gimplify_expr): Take a OBJC_WEAK_REFERENCE_EXPR tree and covert it into a 'weak' reference API before gimplification. 2007-06-29 Fariborz Jahanian Radar 5279122 * objc-act.c (objc_build_compound_setter_call): Decay rhs before using it in a setter call generation. 2007-06-18 Fariborz Jahanian Radar 5265737 * objc-act.c (objc_v2_build_setter_call, objc_build_setter_call): Look into rhs of TARGET_EXPR for the getter tree (c++ only). 2007-06-18 Fariborz Jahanian Radar 5265608 * objc-act.c (objc_declare_property_impl): Error reporting replaces gcc_assert. 2007-06-06 Fariborz Jahanian Radar 5250860 (Remove old property) * objc/objc-act.c (objc_set_property_attr, objc_add_property_variable, objc_build_getter_call, objc_setter_func_call, objc_v2_encode_prop_attr, objc_v2_merge_property, declare_atomic_property_api, aggregate_contains_objc_pointer, synth_module_prologue, objc_finish_message_expr, objc_merge_proto_properties_in_class, objc_process_getter_setter, objc_synthesize_getter, objc_synthesize_setter, objc_gen_property_data, objc_add_internal_ivar, finish_class): Remove code related to old property. * objc/objc-act.h: Remove all declarations related to old property. 2007-05-31 Fariborz Jahanian Radar 5172645 * objc-act.c (objc_add_property_variable): Check for warn_property_assign_default flag added. 2007-05-30 Fariborz Jahanian Radar 5232840 * objc-act.c (objc_synthesize_new_setter): Set TREE_USED flag on parameter being used. 2007-05-29 Fariborz Jahanian Radar 5217964 * objc-act.c (objc_build_ivar_layout): Skip count bits must all come before the scan count bits. 2007-05-23 Fariborz Jahanian Radar 5195402 * objc-act.c (objc_check_nsstring_pointer_type): New (objc_check_format_nsstring): Call objc_check_nsstring_pointer_type 2007-05-18 Fariborz Jahanian Radar 5202926 * objc-act.c (build_metadata_decl): Takes a new argument. (forward_declare_categories, synth_v2_forward_declarations, generate_v2_shared_structures): Pass false/true to build_metadata_decl. (objc_anonymous_local_objc_name): New. 2007-05-17 Fariborz Jahanian Radar 5207415 * objc-act.c (objc_synthesize_new_getter): Use existing getter name for synthesis. (objc_synthesize_new_setter): Use existing setter name for synthesis. 2007-05-16 Fariborz Jahanian Radar 5207415 * objc-act.c (objc_synthesize_new_getter): Use existing getter name for synthesis. (objc_synthesize_new_setter): Use existing setter name for synthesis. 2007-05-12 Fariborz Jahanian Radar 5192466 * objc-act.c (build_v2_protocol_template): Define two new fields for 'struct protocol_t'. (build_protocol_initializer): Initialize the two new fields. 2007-05-07 Fariborz Jahanian Radar 4157812 * objc-act.c (objc_add_property_setter_method): Call to objc_build_keyword_decl has new argument. (finish_class): Ditto. (objc_add_method_declaration): Quick return on errornous selector. (objc_build_keyword_decl): Save argument attribute passed to objc_build_keyword_decl in newly built argument node. (start_method_def): Process selector argument's attribute. * objc-act.h (KEYWORD_ARG_ATTRIBUTE): New macro 2007-05-03 Fariborz Jahanian Radar 5180172 * objc-act.c (objc_declare_property_impl): Issue error on use of @synthesize in a category implementation. 2007-05-03 Fariborz Jahanian Radar 4874626 * objc-act.c (objc_finish_file): Pass current input_location to emit_instantiate_pending_templates. 2007-04-30 Fariborz Jahanian Radar 5159695 * objc-act.c (objc_add_property_variable): Warn on mismatched attribute in class continuation property declaration. 2007-04-30 Fariborz Jahanian Radar 5168496 * objc-act.c (managed_objc_object_pointer): New (objc_add_property_setter_method): Call it instead of objc_type_valid_for_messaging. (objc_add_property_variable): Ditto. (objc2_valid_objc_catch_type): Replaced inline code with call to managed_objc_object_pointer. 2007-04-25 Fariborz Jahanian Radar 5159707 * objc-act.c (objc_add_property_variable): Warn on mismatched type of property in class continuation and its main class. 2007-04-23 Fariborz Jahanian Radar 5153561 * objc-act.c (objc_init): Initialize data structures needed in objc2_eh_runtime_type routine. 2007-04-23 Fariborz Jahanian 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 Radar 5130983 * objc-act.c (objc_finish_foreach_loop): Issue error on non-lvalue selector expression. 2007-03-12 Fariborz Jahanian Radar 5023725 * objc-act.c (OBJC_FLAG_ZEROCOST_EXCEPTIONS): New macro (objc_init_exceptions): Use it. 2007-04-19 Fariborz Jahanian Radar 5140757 * objc-act.c (objc_build_compound_setter_call): Use save_expr instead of copy_node for rhs. 2007-04-18 Fariborz Jahanian Radar 5128402 * objc-act.c (objc_finish_foreach_loop): Set elem to nil at the else part of the outer if-stmt instead of at the begining. 2007-04-09 Fariborz Jahanian Radar 5096648 * objc-act.c (TARGET_CFSTRING_P): Removed (objc_NSString_format): Removed 2007-04-05 Fariborz Jahanian Radar 5109807 * objc-act.c (objc_build_ivar_layout): skip the gap 2007-04-02 Fariborz Jahanian Radar 4929049 (objc_remove_weak_read): Modify how typecast is applied. Change code because input tree has changed. 2007-03-30 Fariborz Jahanian Radar 4727191 (tweaked) (objc_build_compound_setter_call): Set DECL_SEEN_IN_BIND_EXPR_P on Dupe'd local variable. 2007-03-29 Fariborz Jahanian Radar 5096644 * objc-act.c (objc_add_property_variable): Check for forward class use of property type before doing some checking. 2007-03-29 Fariborz Jahanian Radar 5080710 * objc-act.c (objc_finish_message_expr, build_objc_method_call, objc_synthesize_new_getter, objc_synthesize_new_setter): Added check for TREE_ADDRESSABLE flag in deciding if method returns its structure value in memory. 2007-03-29 Fariborz Jahanian 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 ''. (declare_atomic_property_api): New routine (build_id_NSCopying_type): New routine (declare_prototype_property_bycopy): Clean up to call build_id_NSCopying_type. (aggregate_contains_objc_pointer): New routine (diagnose_property_mismatch): Diagnose on atomic/nonatomic mismatch. (objc_synthesize_new_getter): Generate atomic 'helper's in getters for 'copy'/'retain', as well as those struct objects passed in memory under a variety of situations. (objc_synthesize_new_setter): Generate atomic 'helper's in setters for 'copy'/'retain', as well as those struct objects passed in memory under a variety of situations. 2007-03-29 Fariborz Jahanian Radar 4564694 * objc-act.c (objc_is_reserved_word): @package is new objc keyword. (add_instance_variable): Treat @package ivar same as @public (32bit) and same as @private (64bit) for linkage purposes. 2007-03-27 Fariborz Jahanian Radar 5040740 * objc-act.c (lookup_nested_method): New (objc_synthesize_new_getter): Call lookup_nested_method. (objc_synthesize_new_setter): Ditto. (lookup_nested_property): New (objc_declare_property_impl): Call lookup_nested_property. 2007-03-23 Fariborz Jahanian Radar 5060975 * objc-act.c (build_objc_exception_stuff): objc_exception_throw (id) claims that it may throw an exception 2007-03-27 Fariborz Jahanian Radar 5025001 * objc-act.c (objc_build_struct): Inser a new char :0 bf if last ivar was a bitfield. (build_v2_ivar_list_initializer): Fix an unrelated objctivec-c++ bug. 2007-03-27 Fariborz Jahanian Radar 5005756 * objc-act.c (build_objc_method_call, build_v2_build_objc_method_call): Don't check on method attributes sent to receiver of 'id' or 'Class' types. 2007-03-23 Fariborz Jahanian Radar 5002848 * objc-act.c (generating_property_type_encoding): Declare (objc_v2_encode_prop_attr): Set generating_property_type_encoding. (encode_pointer): Get underlying type of a type name for encoding. 2007-03-23 Fariborz Jahanian Radar 4985544 * objc-act.c (objc_check_format_nsstring): New (objc_NSString_format): New 2007-03-22 Fariborz Jahanian Radar 4994854 * objc-act.c (objc_start_category_interface): If anonymous category already declared, then use it. (objc_add_property_variable): Insert new property into primary class. 2007-03-22 Fariborz Jahanian Radar 4965989 * objc-act.h (ANONYMOUS_CATEGORY): New macro. * objc-act.c (objc_add_property_variable): Add merging of property in anonymous category into primary class. (objc_merge_methods): New. (finish_class): Merge methods from anonymous categories into primary class. 2007-03-22 Fariborz Jahanian Removed objc2 hybrid abi * objc-act.c: All code and checking related to hybrid abi is removed. 2007-03-22 Fariborz Jahanian Radar 4995942 * objc-act.c (objc2_build_ehtype_initializer): Change setting of _objc_ehtype_vtable field. 2007-03-22 Fariborz Jahanian Radar 4995066 * objc-act.c (objc_build_ivar_assignment): Takes new argument. (objc_build_ivar_assignment): Call objc2_outervar for valid 'non-fragile' ivars only. (objc_generate_write_barrier): Add objc2_ivar_ref as 2nd argument. 2007-03-22 Fariborz Jahanian Radar 4982951 * objc-act.c (objc2_outervar): New (objc2_build_indirect_ref_ivar2): New (objc_substitute_decl): Handle objc2's 'non-fragile' ivar reference. (objc_build_ivar_assignment): Get the outervar for objc2 (objc_v2_ivar_reference): Now returns the objc2's ivar offset variable upon success. (objc_strip_off_indirection, objc_generate_write_barrier): Calls objc_v2_ivar_reference differently. 2007-03-22 Fariborz Jahanian Radar 4957534 * objc-act.c (objc2_build_throw_call): Call objc_exception_rethrow for @throw in objc2's abi. (build_objc_exception_stuff): Define objc_rethrow_exception_decl. * objc-act.h (objc_rethrow_exception_decl): Renamed from objc_rethrow_exception (previously unsed). 2007-03-22 Fariborz Jahanian Radar 5008110 - part2 (minor tweak) * objc-act.c (init_UOBJC2_EHTYPE_decls): Moved up. (objc2_build_ehtype_initializer): Call init_UOBJC2_EHTYPE_decls. 2007-03-22 Fariborz Jahanian Radar 5008110 * objc-act.c (objc2_build_ehtype_var_decl): Takes two new argument. (objc2_objc_exception_attr): New (objc2_eh_runtime_type): Generate extern or weak EHTYPE meta-data depending on setting of __objc_exception__ attribute. (generate_v2_shared_structures): Generate EHTYPE meta-data depending on setting of __objc_exception__ attribute. 2007-03-22 Fariborz Jahanian Radar 4951324 * objc-act.c (objc2_eh_runtime_type): Remove call to init_UOBJC2_EHTYPE_decls. (objc_init_exceptions): Call init_UOBJC2_EHTYPE_decls here. (objc2_build_extern_decl_catch_object): New (objc_begin_catch_clause): Call objc2_build_extern_decl_catch_object to declare objc2's new typeinfo declarations. 2007-03-22 Fariborz Jahanian Radar 4995967 * objc-act.c (objc_begin_catch_clause) Assume 'id obj' for the @catch (...) expression. 2007-03-22 Fariborz Jahanian Radar 2848255 * objc-act.h: New declaratons for objc2 exception APIs. * objc-act.c (objc_init): Use objc2_eh_runtime_type with -fobjc-zerocost-exceptions for exception type mangling. (create_weak_decl): New. (objc2_build_ehtype): New. objc2_build_ehtype_initializer): New. (objc2_build_ehtype_var_decl): New. (objc2_valid_objc_catch_type): New. (objc2_eh_runtime_type): New. (objc_init_exceptions): New objc2 exception initialization, declare __objc_personality_v0 personality function. (objc_begin_catch_clause): Add support for objc2 catch ABI and new @catch(...) syntax. (objc2_liteweight_finish_try_stmt): New. (objc_finish_catch_clause): Add support for insertion of new control for objc2 catch. (objc_build_throw_stmt): Now calls objc2_build_throw_call. (objc2_build_throw_call): New routine to call for the throw ABI. (build_objc_exception_stuff): Declares vaiours objc2 new ABI functions. 2007-02-06 Fariborz Jahanian Radar 4894756 * objc-act.c (STRING_V2_IVAR_OFFSET_PREFIX): New macro. (objc_v2_ivar_reference): New routine. (objc_strip_off_indirection): Don't strip off an objc2 ivar reference tree. (objc_is_ivar_reference_p): Check for objc2 ivar tree. (objc_generate_write_barrier): Added support for generation of write barrier for new objc2 ivar reference tree. (objc_class_visibility): Use STRING_V2_IVAR_OFFSET_PREFIX. 2007-02-06 Fariborz Jahanian Radar 4966565 * objc-act.c (get_category_base_class_impl): New. (lookup_accessor_in_base_class_impl): New. (objc_gen_property_data): Further look into base class implementation before issuing warning on unimplemented accessor. 2007-02-06 Fariborz Jahanian Radar 4963113 * objc-act.c (check_methods_accessible): Do not warn of unimplemmented 2007-02-06 Fariborz Jahanian Radar 4968128 * objc-act.c (strip_end_colon): New (finish_class): Call strip_end_colon to strip ':' for setter method name declaration. 2007-02-06 Fariborz Jahanian Radar 4959107 * objc-act.c (objc_build_getter_call): Lookup in protocol list also. 2007-02-06 Fariborz Jahanian Radar 4951615 * objc-act.h (IVAR_PUBLIC_OR_PROTECTED): New macro. * objc-act.c (ivar_offset_ref): Use IVAR_PUBLIC_OR_PROTECTED to decide if 'ivar' offset variable is 'private extern' or not. (add_instance_variable): Set IVAR_PUBLIC_OR_PROTECTED flag. 2007-02-06 Fariborz Jahanian Radar 4954480 * objc-act.c (objc_v2_build_ivar_ref): Check for bad 'ivar' use. 2007-02-06 Fariborz Jahanian Radar 4949034 * objc-act.c (objc_init): Set default setting for flag_objc_call_cxx_cdtors. 2007-02-06 Fariborz Jahanian Radar 4923634 * objc-act.c (finish_objc): Use correct value for objc2's CLS_HAS_CXX_STRUCTORS flag. 2007-02-06 Fariborz Jahanian Radar 4945770 * objc-act.c (objc_build_struct): Check for corner cases before building the TYPE_OBJC_INFO tree list. 2007-02-06 Fariborz Jahanian Radar 4897159 * objc-act.c (objc_synthesize_new_setter): Get the first argument of setter in a fail-safe manner. 2007-02-06 Fariborz Jahanian Radar 4899564 * objc-act.c (finish_class): Diagnose __weak on 'retain'/'copy'. 2007-02-06 Fariborz Jahanian Radar 4903391 * objc-act.c (objc_common_type): Take a new value for argno for property @synthesize type comparison. (objc_declare_property_impl): Call objc_compare_types to compare ivar and property's type according to objc's type conversion rules. 2007-02-06 Fariborz Jahanian Radar 4879524 * objc-act.c (objc_add_property_variable): typo in warning fixed. 2007-02-06 Fariborz Jahanian Radar 4781080 * objc-act.c (objc_finish_message_expr): Use umsg_fixup_decl for float/double returning methods. 2006-12-18 Fariborz Jahanian Radar 4888238 * objc-act.c (generate_objc_image_info): Declare _OBJC_IMAGE_INFO as a local symbol. 2006-12-15 Fariborz Jahanian Radar 4449535 * objc-act.c (objc_impl_forwardInvocation): New (check_protocol): Call objc_impl_forwardInvocation 2006-12-16 Fariborz Jahanian Radar 4838528 * objc-act.c (objc_setter_func_call): Check type of setter method. 2006-12-14 Fariborz Jahanian Radar 4841013 * objc-act.h (PROPERTY_ASSIGN): Modified * objc-act.c (objc_add_property_variable): No 'assign' warning for 'readonly' property decl. 2006-12-14 Fariborz Jahanian Radar 4712415 * objc-act.c (objc_add_property_variable): Carry deprecated attribute into property node. (objc_add_property_setter_method): Carry deprecated attribute from property node into instance method node. (finish_class): Ditto 2006-12-14 Fariborz Jahanian Radar 4854605 * objc-act.c (objc_finish_foreach_loop): Set iterator to nil. 2006-12-14 Fariborz Jahanian Radar 4855821 * objc-act.c (objc_add_property_variable): Don't warn if 'assign' storage attribute is explicit. 2006-12-13 Fariborz Jahanian Radar 4531086 * objc-act.c (OBJC_WARN_OBJC2_FEATURES): New macro to warn on use of objc2 features for older OS's. (objc_init): Warn (objc_add_property_variable): Warn (objc_build_foreach_components): Warn 2006-12-13 Fariborz Jahanian Radar 4862848 * objc-act.c (OBJC_FLAG_OBJC_ABI): define macro if undefined. (objc_init): Use OBJC_FLAG_OBJC_ABI (objc_is_public): Error recovery found by accident. 2006-12-11 Fariborz Jahanian Radar 4869979 * objc-act.c (objc_type_has_bycopy_attr): New (objc_diagnose_bycopy_type): New (objc_add_method_declaration): Call objc_diagnose_bycopy_type 2006-12-07 Fariborz Jahanian Addendum to Radar 4810587 * objc-act.c (generate_objc_image_info): Remove what was done for 4.0 and replace it with force symbol generation for _OBJC_IMAGE_INFO object. 2006-12-01 Fariborz Jahanian Radar 4859096 * objc-act.c (objc_property_call): New function. 2006-11-17 Fariborz Jahanian Radar 4843145 * objc-act.c (objc_visibly_hidden_class): Removed. (objc_class_visibility): New (objc_create_global_decl_for_class): New (ivar_offset_ref): Call objc_create_global_decl_for_class. (generate_v2_shared_structures): Call objc_create_global_decl_for_class. (objc_warn_on_class_attributes): Don't warn on "default" visibility either. 2006-11-10 Fariborz Jahanian Radar 4829803 * objc-act.c (objc_is_gcable_type): Make quick return of C++'s unknown type. 2006-11-09 Fariborz Jahanian 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 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 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 Radar 4781080 * objc-act.c (objc_finish_message_expr): Call objc_fpreturn_msgcall (build_objc_method_call) : Ditto 2006-11-03 Fariborz Jahanian 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 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 Radar 4815054 * objc-act.c (finish_class): Change text of diagnostic. 2006-11-02 Fariborz Jahanian Radar 4815061 * objc-act.c (diagnose_property_mismatch): Warn when readwrite is restricted to readonly in derived class. 2006-11-02 Fariborz Jahanian Radar 4816280 * objc-act.c (objc_gen_property_data): Warn when @implementation does not implemented property. 2006-11-01 Fariborz Jahanian 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 Radar 4783068 * objc-act.c (objc_build_ivar_assignment): Turn off Winvalid-offsetof for synthesized null-pointer dereferencing expression. 2006-10-06 Fariborz Jahanian Radar 4725660 * objc-act.c (objc_build_getter_call): Check for a valid class. 2006-09-29 Fariborz Jahanian 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 Radar 4477797 * objc-act.c (objc_build_struct): Set DECL_IGNORED_P flag in 'super' class. 2006-09-22 Fariborz Jahanian Radar 3904139 * objc-act.c (objc_demangle): Use exclusively cxx_printable_name for obj-c++ name demangling. 2006-09-21 Fariborz Jahanian 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 Radar 4738176 * objc-act.c (objc_build_compound_setter_call): Set TREE_NO_WARNING on synthesized compound expression. 2006-09-19 Fariborz Jahanian 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 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 Radar 4727659 * objc-act.c (really_start_method): Copy 'noreturn' attribute flag into FUNCTION_DECL node. 2006-09-14 Fariborz Jahanian Radar 4724822 * objc-act.c (lookup_property): Check for incomplete class. 2006-09-11 Fariborz Jahanian 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 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 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 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 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 Radar 4712188 * objc-act.c (objc_build_compound_setter_call): Set TREE_NO_WARNING to suppress c++ warning. 2006-08-31 Fariborz Jahanian Radar 4697411 * objc-act.c (objc_volatilize_component_ref): New function. 2006-08-29 Fariborz Jahanian 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 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 Radar 4702359 * objc-act.c (generate_v2_shared_structures): instanceStart, instanceSize is now sizeof (struct class_t). 2006-08-25 Fariborz Jahanian Radar 4689268 * objc-act.c (start_class): On duplicate class implementation error, return the old class for graceful recovery. 2006-08-25 Fariborz Jahanian Radar 4699834 * objc-act.c (synth_module_prologue): Removed _rtp suffix from objc_msgSend_fixup_rtp and variants. 2006-08-25 Fariborz Jahanian 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 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 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 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 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 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 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 Radar 4669052 * Make-lang.in (objc-parse.y): Ensure that we don't rebuild. 2006-08-03 Fariborz Jahanian 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 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 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 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 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 Radar 4649718, 4651088 * objc/objc-act.c (objc_add_property_variable): err on bad property declarations. 2006-07-26 Fariborz Jahanian 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 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 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 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 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 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 Radar 4631814 * objc-act.c (build_property_reference): Preserve original 'self' tree in generated call to property's 'getter'. 2006-07-17 Fariborz Jahanian Radar 4621020 - small change * objc-act.c (objc_set_property_attr): Supprt 'weak' attribute unconditionally. 2006-07-14 Fariborz Jahanian 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 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 Radar 4625635 * objc-act.c (objc_add_property_variable): Make 'byref' the dafault attribute for pointer-to-object properties. 2006-07-11 Fariborz Jahanian Radar 4623423 * objc-act.c (objc_type_valid_for_messaging): 'Class' is a valid selector type as well. 2006-07-10 Fariborz Jahanian 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 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 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 Radar 4606233 * objc-act.c: (really_start_method): Remove check for missing attribute on @implementation methods. 2006-06-26 Fariborz Jahanian 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 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 Radar 4582997 * objc-act.c (is_property): Lookup property in the interface, not in its implementation. 2006-06-12 Fariborz Jahanian Radar 4582204 * objc-act.c (build_message_ref_translation_table): Initializer tree-list is fixed. 2006-06-12 Fariborz Jahanian Radar 4581680 * objc-act.c (objc_start_method_definition): Generate nonlazy section for 'hybrid' abi as well. 2006-06-08 Fariborz Jahanian 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 Radar 4292049 * objc-act.c (objc_generate_write_barrier): Turn on warning on pointer arithmatic of gc objects. 2006-06-07 Fariborz Jahanian Radar 4576123 * objc-act.c (build_v2_property_table_initializer): Set/Reset generating_instance_variables. 2006-06-02 Fariborz Jahanian 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 Radar 4563333 * objc-act.c (objc_finish_foreach_loop): Set input_location to foreach's location 2006-05-31 Fariborz Jahanian 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 Radar 4476365 * objc-act.c (encode_type): Encode c++'s reference type. 2006-05-30 Fariborz Jahanian Radar 4547918 * objc-act.c (objc_finish_message_expr): Issue warning on sending message to a forward class declaration. 2006-05-25 Fariborz Jahanian 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 * objc-act.c (JBLEN): Update for x86_64. 2006-05-23 Fariborz Jahanian 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 Radar 4558088 - revised * objc-act.c (objc_add_property_variable): Diagnose mismatched property declarations by calling comptypes. 2006-05-23 Fariborz Jahanian Radar 4558088 * objc-act.c (objc_add_property_variable): Diagnose mismatched property declarations. 2006-05-22 Fariborz Jahanian 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 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 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 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 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 radar 4180592 * objc-act.c (objc_finish_message_expr): Check for error node. 2006-05-09 Fariborz Jahanian radar 4538105 * objc-act.c (objc_finish_foreach_loop): Mark element selector as being used. 2006-05-08 Fariborz Jahanian radar 4533107 * objc/objc-act.c (lookup_property_in_list): Lookup further in main property list. 2006-05-08 Fariborz Jahanian radar 4540451 * objc/objc-act.c (create_ivar_offset_name): Change ivar offset symbol name. 2006-05-08 Fariborz Jahanian 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 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 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 Radar 4512786 * objc/objc-act.c (objc_init_exceptions): Remove warning. 2006-04-26 Fariborz Jahanian Radar 4523837 * objc/objc-act.c (objc_build_getter_call): Restore 'receiver' to its original tree in call tree. 2006-04-26 Fariborz Jahanian 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 Radar 4517826 * objc/objc-act.c (objc_build_getter_call): Check for null tree(s) before accessing their fields. 2006-04-12 Fariborz Jahanian 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 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 Radar 4506903 * objc/objc-act.c (objc_build_getter_call): Lookup property in id.property as well. 2006-04-12 Fariborz Jahanian 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 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 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 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 Radar 4494634 * objc-act.c (objc_build_string_object): Call build1 directly. 2006-03-31 Fariborz Jahanian Radar 4494634 * objc-act.c (objc_build_string_object): Suppress strict-alias warning when converting to type 'id'. 2006-03-27 Fariborz Jahanian Radar 4133425 * objc-act.c (objc_diagnose_private_ivar): New. 2006-03-22 Fariborz Jahanian 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 Radar 4486614 * objc/objc-act.c (objc_generate_weak_read): Don't attempt to generate 'weak' barriers in templates. 2005-03-10 Fariborz Jahanian Radar 4466530 * objc/objc-act.c (synth_module_prologue): -fobjc-direct-dispatch should be a no-op on ppc64 2005-03-09 Fariborz Jahanian Radar 4457381 * objc/objc-act.c (objc_finish_message_expr): Look for message in @class's protocol list. 2005-03-08 Fariborz Jahanian Radar 4468456 * objc/objc-act.c (objc_finish_foreach_loop): 'continue' label belongs to current (inner) while-do loop. 2005-02-28 Fariborz Jahanian Radar 4156731 * objc/objc-act.c (gen_type_name_0): Handle Error reporting of nameless types. 2005-02-28 Fariborz Jahanian 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 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 Radar 4441551 * objc/objc-act.c (diagnose_selector_cast): New function definition. 2006-02-14 Fariborz Jahanian 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 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 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 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 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 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 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 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 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 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 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 Radar 4404766 * objc/objc-act.c (JBLEN): define 64bit version of this macro as well. 2005-12-22 Fariborz Jahanian 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 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 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 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 Radar 4229905 * objc/objc-act.c (objc_compare_types): New. 2005-12-09 Fariborz Jahanian 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 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 * objc-act.c (JBLEN): Update for x86_64. 2006-05-18 Stuart Hastings Radar 4385273 * gcc/objc/objc-act.c (objc_build_synchronized): Update JBLEN for 64-bit. 2006-04-27 Fariborz Jahanian Radar 4399973 Radar 4327263 * objc/objc-act.c (init_module_descriptor): Remove file name from module descriptors. 2006-03-10 Fariborz Jahanian 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 Radar 4219590 * objc/objc-act.c (objc_start_method_definition): Initialize break/continue labels. 2005-11-29 Fariborz Jahanian 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 Radar 4349670 * objc/objc-act.c (init_objc_symtab): Use 'short' type for constant initializer initializing a 'short' field. 2005-11-18 Fariborz Jahanian 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 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 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 Radar 4330422 * objc/objc-act.c (objc_non_volatilized_type): New 2005-11-07 Fariborz Jahanian 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 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 Radar 4301047 * objc-act.c (encode_type): Remove the hack. 2005-10-17 Fariborz Jahanian 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 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 Radar 4291099 * objc-act.c (objc_generate_write_barrier): Add write-barriers for c++'s ctor initializer list. 2005-10-07 Fariborz Jahanian 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 Radar 4278236 * objc-act.c (objc_declare_class): Pick the right type tree. 2005-10-04 Fariborz Jahanian Radar 4281748 * objc-act.c (objc_check_global_decl): New 2005-10-07 Fariborz Jahanian radar 4292010 * objc-act.c (objc_generate_write_barrier): Turn off gc-specific warning till post chardonnay. 2005-10-06 Fariborz Jahanian 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 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 Ziemowit Laski 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 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 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 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 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 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 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 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 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 * lang-specs.h: While making PCH, invoke as if -fsave-repository is used. 2005-06-28 Ziemowit Laski 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 Radar 4154928 * objc-act.c (objc_common_type): New function. 2005-06-21 Ziemowit Laski 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 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 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 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 Radar 4055183 * objc-act.c (objc_rewrite_function_call): New function. 2005-03-11 Ziemowit Laski Radar 3995882 * objc-act.c (objc_begin_try_stmt): When doing _setjmp()/ _longjmp() EH, call objc_mark_locals_volatile(). 2005-02-17 Ziemowit Laski Radar 4006978 * objc-act.c (objc_is_public): Remove unneeded code. 2005-02-17 Ziemowit Laski 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 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 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 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 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 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 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 * objc-act.c (objc_get_class_reference): Move stray APPLE LOCAL marker. 2005-01-17 Ziemowit Laski 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 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 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 Radar 3948135 * lang-specs.h ("@objective-c"): Use cc1obj when -E is used so that -fzero-link is accepted. 2005-01-12 Ziemowit Laski Radar 3882153 * objc-act.c (objc_finish_file): Do not synthesize metadata when generating a PCH file. 2005-01-11 Ziemowit Laski 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 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 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 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 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 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 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 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 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 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.