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.