Merge from branches/gcc-4_8-branch up to rev 204657.
[official-gcc.git] / gcc-4_8-branch / gcc / objc / ChangeLog
blob508874cec3e440800e5167a9bfd90f0966e4bb45
1 2013-10-16  Release Manager
3         * GCC 4.8.2 released.
5 2013-05-31  Release Manager
7         * GCC 4.8.1 released.
9 2013-03-22  Release Manager
11         * GCC 4.8.0 released.
13 2012-11-20  Diego Novillo  <dnovillo@google.com>
15         * objc-act.c: Replace all vec<T, A>() initializers with vNULL.
17 2012-11-16  Diego Novillo  <dnovillo@google.com>
19         Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
21         * objc-act.c: Use new vec API in vec.h.
22         * objc-act.h: Likewise.
23         * objc-gnu-runtime-abi-01.c: Likewise.
24         * objc-next-runtime-abi-01.c: Likewise.
25         * objc-next-runtime-abi-02.c: Likewise.
26         * objc-runtime-hooks.h: Likewise.
27         * objc-runtime-shared-support.c: Likewise.
28         * objc-runtime-shared-support.h: Likewise.
30 2012-10-01  Lawrence Crowl  <crowl@google.com>
32         * Make-lang.in (OBJC_OBJS): Add dependence on hash-table.o.
33         (objc-act.o): Add dependence on hash-table.h.
34         * objc-act.c (objc_detect_field_duplicates): Change to new type-safe
35         hash table.
37 2012-06-29  Steven Bosscher  <steven@gcc.gnu.org>
39         * Make-ang.in: Adjust for move of C front-end files.
40         * config-lang.in: Likewise.
41         * objc-encoding.c: Look for cp-tree.h in cp/, and for c-tree.h
42         and c-lang.h in c/.
43         * objc-runtime-shared-support.c: Likewise.
44         * objc-next-runtime-abi-01.c: Likewise.
45         * objc-next-runtime-abi-02.c: Likewise.
46         * objc-gnu-runtime-abi-01.c: Likewise.
47         * objc-act.c: Likewise.
48         * objc-lang.c: Likewise.
50 2012-06-19  Steven Bosscher  <steven@gcc.gnu.org>
52         * objc-next-runtime-abi-01.c: Do not include tm.h and output.h.
53         Include c-family/c-target.h.
54         (handle_next_class_ref): Rewrite to emit top-level asm statements.
55         (handle_next_impent): Likewise.
56         * objc/Make-lang.in: Fix dependencies for objc-next-runtime-abi-01.o.
58 2012-05-31  Steven Bosscher  <steven@gcc.gnu.org>
60         * objc-act.c: Do not include output.h.
62 2012-05-17  Paolo Carlini  <paolo.carlini@oracle.com>
64         PR objc++/53388
65         * objc-act.c (objc_get_class_reference, objc_build_message_expr):
66         Use build_min_nt_loc.
68 2012-04-20  Jan Hubicka  <jh@suse.cz>
70         * objc-act.c (mark_referenced_methods); Use
71         cgraph_mark_force_output_node.
73 2012-03-21  Steven Bosscher  <steven@gcc.gnu.org>
75         * objc-act (objc_build_ivar_assignment): Do not call assemble_external.
76         (objc_build_global_assignment): Likewise.
77         (objc_build_strong_cast_assignment): Likewise.
78         * objc-next-runtime-abi-01.c: Cleanup commented-out assemble_external.
79         * objc-next-runtime-abi-02.c: Likewise.
80         * objc-gnu-runtime-abi-01.c: Likewise.
82 2012-03-05  Jason Merrill  <jason@redhat.com>
84         * objc-map.c (objc_map_private_resize, objc_map_alloc_ggc): Don't
85         call _stat functions without MEM_STAT_INFO.
87 2011-11-12  Iain Sandoe  <iains@gcc.gnu.org>
89         * objc-next-runtime-abi-01.c (objc_eh_personality): Use gcc personality
90         for Objective-C m32.
92 2011-10-29  Iain Sandoe  <iains@gcc.gnu.org>
94         PR target/47997
95         * objc-act.c (objc_build_string_object): Remove redundant second
96         call to fix_string_type ().  Add a checking assert that we are,
97         indeed, passed a STRING_CST.
99 2011-10-18  Mikael Pettersson  <mikpe@it.uu.se>
101         PR objc/50743
102         * objc-act.c (check_duplicates): Cast TREE_VEC_LENGTH result to
103         size_t to avoid signed/unsigned
104         comparison.
105         (insert_method_into_method_map): Likewise.
107 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
109         * objc-map.h: New file.
110         * objc-map.c: New file. 
111         * config-lang.in (gtfiles): Added objc-map.h.
112         * Make-lang.in (OBJC_OBJS): Added objc-map.o.
113         (objc/objc-map.o): New rule.
114         (objc/objc-act.o): Depend on objc/objc-map.h.
115         * objc-next-runtime-abi-02.c: Added a TODO comment.
116         * objc-act.c: Include objc-map.h.
117         (nst_method_hash_list, cls_method_hash_list): Removed.
118         (instance_method_map, class_method_map): New.
119         (cls_name_hash_list, als_name_hash_list): Removed.
120         (class_name_map, alias_name_map): Removed.
121         (ivar_offset_hash_list): Removed.
122         (hash_class_name_enter, hash_class_name_lookup, hash_enter,
123         hash_lookup, hash_add_attr, add_method_to_hash_list): Removed.
124         (interface_hash_init): New.
125         (objc_init): Call interface_hash_init.
126         (objc_write_global_declarations): Iterate over class_method_map
127         and instance_method_map instead of cls_method_hash_list and
128         nst_method_hash_list.
129         (objc_declare_alias): Use alias_name_map instead of
130         cls_name_hash_list.
131         (objc_is_class_name): Use class_name_map and alias_name_map
132         instead of cls_name_hash_list and als_name_hash_list.
133         (interface_tuple, interface_htab, hash_interface, eq_interface):
134         Removed.
135         (interface_map): New.
136         (add_class): Renamed to add_interface.  Use interface_map instead
137         of interface_htab.
138         (lookup_interface): Use interface_map instead of interface_htab.
139         (check_duplicates): Changed first argument to be a tree,
140         potentially a TREE_VEC, instead of a hash.  Changed implementation
141         to match.
142         (lookup_method_in_hash_lists): Use class_method_map and
143         instance_method_map instead of cls_method_hash_list and
144         nst_method_hash_list.
145         (objc_build_selector_expr): Likewise.
146         (hash_func): Removed.
147         (hash_init): Create instance_method_map, class_method_map,
148         class_name_map, and alias_name_map.  Do not create
149         nst_method_hash_list, cls_method_hash_list, cls_name_hash_list,
150         als_name_hash_list, and ivar_offset_hash_list.
151         (insert_method_into_method_map): New.
152         (objc_add_method): Use insert_method_into_method_map instead of
153         add_method_to_hash_list.
154         (start_class): Call add_interface instead of add_class.
155         * objc-act.h (cls_name_hash_list, als_name_hash_list,
156         nst_method_hash_list, cls_method_hash_list): Removed.
158 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
160         * objc-next-runtime-abi-01.c (objc_build_exc_ptr): Delete old
161         interface with two parallel arrays to hold standard builtin
162         declarations, and replace it with a function based interface that
163         can support creating builtins on the fly in the future.  Change
164         all uses, and poison the old names.  Make sure 0 is not a
165         legitimate builtin index.
166         * objc-next-runtime-abi-02.c (objc_build_exc_ptr): Ditto.
167         * objc-gnu-runtime-abi-01.c (objc_build_exc_ptr): Ditto.
169 2011-07-19  Richard Guenther  <rguenther@suse.de>
171         * objc-next-runtime-abi-02.c (objc_v2_build_ivar_ref):
172         Use fold_build_pointer_plus.
173         (objc2_build_ehtype_initializer): Likewise.
175 2011-07-11  Nicola Pero  <nicola.pero@meta-innovation.com>
177         * objc-encoding.h (obstack.h): Do not include.
178         (util_obstack, util_firstobj): Do not declare.
179         (encode_field_decl): Updated prototype to return a tree and take a
180         single tree argument.  Updated comments.
181         * objc-encoding.c (util_obstack, util_firstobj): Made static.
182         (objc_encoding_init): New.
183         (encode_field_decl): Existing function renamed to encode_field and
184         made static.  New encode_field_decl wrapper function added.
185         (encode_aggregate_fields): Update call to encode_field_decl to
186         call encode_field.
187         * objc-next-runtime-abi-02.c (obstack.h): Do not include.
188         (util_obstack, util_firstobj): Do not declare.
189         (build_v2_ivar_list_initializer): Updated call to
190         encode_field_decl.
191         * objc-runtime-shared-support.c (obstack.h): Do not include.
192         (util_obstack, util_firstobj): Do not declare.
193         (build_ivar_list_initializer): Updated call to encode_field_decl.
194         * objc-act.c (objc_init): Use objc_encoding_init.
195         * Make-lang.in (objc/objc-runtime-shared-support.o): Do not depend
196         on OBSTACK_H.
197         (objc/objc-gnu-runtime-abi-01.o): Likewise.
198         (objc/objc-next-runtime-abi-01.o): Likewise.
199         (objc/objc-next-runtime-abi-02.o): Likewise.
200         (objc/objc-act.o): Likewise.
201         
202 2011-07-04  Nicola Pero  <nicola.pero@meta-innovation.com>
204         Refactored encoding code into objc-encoding.h and objc-encoding.c.
205         * objc-act.c (util_obstack, util_firstobj, encode_type_qualifiers,
206         encode_type, generating_instance_variables, objc_method_parm_type,
207         objc_encoded_type_size, encode_method_prototype,
208         objc_build_encode_expr, pointee_is_readonly, encode_pointer,
209         encode_array, encode_vector, encode_aggregate_fields,
210         encode_aggregate_within, encode_next_bitfield,
211         encode_gnu_bitfield, encode_field_decl,
212         objc_v2_encode_property_attr): Moved to objc-encoding.h and
213         objc-encoding.c.  No change in the actual code.
214         Include objc-encoding.h.
215         (objc_init): Added TODO.
216         (objc_build_property_setter_name): Made non-static so it can be
217         called from objc-encoding.c.
218         * objc-act.h (OBJC_ENCODE_INLINE_DEFS,
219         OBJC_ENCODE_DONT_INLINE_DEFS): Moved to objc-encoding.h.
220         * objc-runtime-shared-support.h (objc_v2_encode_property_attr,
221         encode_method_prototype, encode_field_decl,
222         generating_instance_variables): Moved to objc-encoding.h.       
223         (objc_build_property_setter_name): Declare.
224         * objc-encoding.c: New.
225         * objc-encoding.h: New.
226         * objc-gnu-runtime-abi-01.c: Include objc-encoding.h.
227         * objc-next-runtime-abi-01.c: Likewise.
228         * objc-next-runtime-abi-02.c: Likewise. 
229         * objc-runtime-shared-support.c: Likewise.
230         * Make-lang.in (OBJC_OBJS): Added objc-encoding.o.
231         (objc/objc-lang.o): Reordered dependencies.
232         (objc/objc-runtime-shared-support.o): Reordered dependencies.
233         Added dependencies on objc-encoding.h and on $(GGC_H),
234         $(DIAGNOSTIC_CORE_H), $(FLAGS_H) and input.h.
235         (objc/objc-gnu-runtime-abi-01.o): Likewise.
236         (objc/objc-next-runtime-abi-01.o): Likewise.
237         (objc/objc-next-runtime-abi-02.o): Likewise.
238         (objc/objc-act.o): Reordered dependencies.  Added dependency on
239         objc-encoding.h.
240         (objc/objc-encoding.o): New rule.
242         * objc-encoding.c (encode_type): Use "%<%T%>" format when printing
243         warning "unknown type %<%T%> found during Objective-C encoding"
244         instead of using gen_type_name.
245         
246 2011-06-05  Nicola Pero  <nicola.pero@meta-innovation.com>
248         * objc-act.c (receiver_is_class_object): Expanded comment.
249         (objc_finish_message_expr): Likewise.
251 2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>
253         PR objc/48539
254         * objc-act.c (objc_finish_message_expr): Warn if messaging a class
255         that was only declared using @class without an @interface.  Warn
256         if messaging an instance of a class that was only declared using
257         @class without an @interface, unless the receiver was also typed
258         with a protocol list.
260 2011-06-01  Nicola Pero  <nicola.pero@meta-innovation.com>
262         * objc-act.c (objc_decl_method_attributes): Implement nonnull
263         attribute for Objective-C methods.
265 2011-05-21  Nicola Pero  <nicola.pero@meta-innovation.com>
267         * config-lang.in (gtfiles): Updated order of files to fix building
268         when the gcc/cp directory is missing, as in the case of some
269         release tarballs.
271 2011-05-20  Nathan Froyd  <froydnj@codesourcery.com>
273         * objc-act.c (objc_compare_types): Use function_args_iterator
274         instead of TYPE_ARG_TYPES to compare function argument types.
276 2011-05-13  Toon Moene  <toon@moene.org>
278         * objc-next-runtime-abi-02.c (newabi_append_ro):
279         Add const qualifier to constant variable pointer declaration.
281 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
283         * objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Use proper accessors.
284         (CLASS_NST_METHODS, CLASS_CLS_METHODS): Likewise.
285         (PROTOCOL_NAME, PROTOCOL_NST_METHODS, PROTOCOL_CLS_METHODS): Likewise.
287 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
289         * objc-runtime-shared-support.h (get_arg_type_list): Delete.
290         (build_function_type_for_method): Declare.
291         * objc-runtime-hooks.h (struct _objc_runtime_hooks_r): Change
292         type of get_arg_type_base_list field.
293         * objc-act.h (OBJC_VOID_AT_END): Delete.
294         * objc-act.c (get_arg_type_list): Delete.
295         (build_function_type_for_method): New function.
296         (objc_decl_method_attributes): Call build_function_type_for_method.
297         (really_start_method): Likewise.
298         * objc-gnu-runtime-abi-01.c
299         (gnu_runtime_abi_01_get_type_arg_list_base): Change prototype and
300         adjust function accordingly.  Update header comment.
301         (build_objc_method_call): Call build_function_type_for_method.
302         * objc-next-runtime-abi-01.c
303         (next_runtime_abi_01_get_type_arg_list_base): Change prototype and
304         adjust function accordingly.  Update header comment.
305         (build_objc_method_call): Call build_function_type_for_method.
306         * objc-next-runtime-abi-02.c
307         (next_runtime_abi_02_get_type_arg_list_base): Change prototype and
308         adjust function accordingly.  Update header comment.
309         (objc_copy_to_temp_side_effect_params): Take fntype instead of a
310         typelist.  Use function_args_iterator for traversing fntype.
311         (build_v2_build_objc_method_call): Adjust call to it.
312         Call build_function_type_for_method
314 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
316         * objc-act.c (objc_start_method_definition): Add parameter expr.
317         Update call to start_method_def.
318         (objc_generate_cxx_ctor_or_dtor, objc_synthesize_getter,
319         objc_synthesize_setter) Update calls to
320         objc_start_method_definition.
321         (objc_get_parm_info): Add parameter expr.  Update call to
322         get_parm_info.
323         (start_method_def): Add parameter expr.  Update call to
324         objc_get_parm_info.
325         * objc-gnu-runtime-abi-01.c (build_module_initializer_routine):
326         Update call to objc_get_parm_info.
327         * objc-runtime-shared-support.h (objc_get_parm_info): Add extra
328         parameter.
330 2011-04-26  Jason Merrill  <jason@redhat.com>
332         * objc-act.c (objc_fold_objc_type_ref): Remove.
333         * objc-act.h: Remove prototype.
335 2011-04-21  Nathan Froyd  <froydnj@codesourcery.com>
337         * objc-act.c (synth_module_prologue): Call build_function_type_list
338         instead of build_function_type.
339         * objc-next-runtime-abi-02.c (next_runtime_02_initialize):
340         Likewise.
342 2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
344         * objc-act.c (ivar_of_class): New.
345         (objc_is_public): Use ivar_of_class.
347 2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
349         * objc-act.c (objc_get_interface_ivars): Removed.
350         (objc_detect_field_duplicates): New.
351         (hash_instance_variable): New.
352         (eq_instance_variable): New.
354 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
356         * objc-act.c (objc_declare_protocols): Renamed to
357         objc_declare_protocol.  Changed first argument to be an identifier
358         instead of a tree chain of identifiers, so that callers don't have
359         to create a temporary tree chain.
361 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
363         * objc-act.c (objc_declare_class): Changed to take a single
364         identifier as argument instead of a tree list.  This means callers
365         don't have to build temporary tree lists to call this function.
366         (synth_module_prologue): Updated calls to objc_declare_class.
368 2011-04-13  Nicola Pero  <nicola.pero@meta-innovation.com>
370         * objc-act.c (build_keyword_selector): Use get_identifier_with_length
371         instead of get_identifier.
373 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
375         * objc-lang.c (objc_init_ts): Move code for this function...
376         * objc-act.c (objc_common_init_ts): ...here. Define.
377         * objc-act.h (objc_common_init_ts): Declare.
379 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
381         * objc-act.c (objc_build_message_expr): Accept two arguments
382         instead of one so that callers can simply pass the arguments
383         without having to create a temporary chain to hold them.
385 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
387         * objc-act.c (comp_proto_with_proto): Do not create and use
388         inefficient temporary argument lists.  Compare the arguments
389         directly.  (match_proto_with_proto): Removed; incorporated into
390         comp_proto_with_proto ().
392 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
394         * objc-act.c (printable_ivar_name): New.
395         (add_instance_variable): Call printable_ivar_name() when an error
396         message needs to be printed.  Do not prepare the instance variable
397         for printing unless there is an actual error.
399 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
401         * objc-act.c (objc_is_class_name, objc_is_id): For efficiency,
402         avoid calling identifier_global_value() multiple times.
404 2011-04-12  Martin Jambor  <mjambor@suse.cz>
406         * objc-act.c (mark_referenced_methods): Call cgraph_get_create_node
407         instead of cgraph_node.
409 2011-04-06  Joseph Myers  <joseph@codesourcery.com>
411         * objc-act.c: Include c-target.h instead of target.h.
412         * Make-lang.in (objc/objc-act.o): Update dependencies.
414 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
416         * lang-specs.h: Match -save-temps* instead of -save-temps.
418 2011-02-26  Nicola Pero  <nicola.pero@meta-innovation.com>
420         * objc-act.c (objc_v2_encode_prop_attr): Rewritten.
422 2011-02-23  Nicola Pero  <nicola.pero@meta-innovation.com>
424         * objc-act.c (build_private_template): Do not copy the
425         CLASS_HAS_EXCEPTION_ATTR from the class to the struct.
426         * objc-act.h (CLASS_HAS_EXCEPTION_ATTR): Define using
427         TYPE_LANG_SLOT_0.
429 2011-02-22  Nicola Pero  <nicola.pero@meta-innovation.com>
431         PR objc/47832
432         * objc-act.c (flexible_array_type_p): New.
433         (add_instance_variable): Produce an error if an instance variable
434         uses flexible array members.
435         (encode_array): Do not emit an error if encoding a flexible array
436         type while generating instance variables.
438 2011-02-21  Mike Stump  <mikestump@comcast.net>
440         * Make-lang.in (check_objc_parallelize): Refine for 4 processor
441         machines.
443 2011-02-20  Nicola Pero  <nicola.pero@meta-innovation.com>
445         * objc-gnu-runtime-abi-01.c (TARGET_64BIT): Removed.  Removed
446         usage of padding fields.  Do not include tm.h.
447         * objc-act.c (objc_write_global_declaration): Set input_location
448         to BUILTINS_LOCATION while generating runtime metadata.
450 2011-01-20  Nicola Pero  <nicola.pero@meta-innovation.com>
452         PR objc/47784
453         * objc-act.c (objc_maybe_build_modify_expr): If 'rhs' has side
454         effects, do not use a temporary variable.
456 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
458         * objc-next-runtime-abi-01.c: Updated comments.
459         * objc-next-runtime-abi-02.c: Same.
461 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
463         * objc-act.c (objc_init, generate_struct_by_value_array): Updated
464         comments.
466 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
468         * objc-act.c: Updated comments.
469         * objc-next-runtime-abi-02.c: Same.
470         * objc-runtime-shared-support.c: Same.
471         * objc-runtime-hooks.h: Same.
472         * objc-act.h: Same.
473         * objc-gnu-runtime-abi-01.c: Same.
475 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
477         * objc-gnu-runtime-abi-01.c (objc_generate_v1_gnu_metadata): Do
478         not generate metadata if there is nothing to put into it.
480 2011-02-17  Iain Sandoe  <iains@gcc.gnu.org>
482         * config-lang.in (gtfiles): Updated.
483         * Make-lang.in (START_HDRS): New.
484         (OBJC_OBJS): Added new object files.
485         (objc/objc-act.o): Updated prerequisites.
486         (objc/objc-lang.o): Updated prerequisites.
487         (objc/objc-runtime-shared-support.o): New.
488         (objc/objc-gnu-runtime-abi-01.o): New.
489         (objc/objc-next-runtime-abi-01.o): New.
490         (objc/objc-next-runtime-abi-02.o): New.
491         * objc-runtime-hooks.h: New.
492         * objc-runtime-shared-support.h: New.
493         * objc-runtime-shared-support.c: New.
494         * objc-gnu-runtime-abi-01.c: New.
495         * objc-next-metadata-tags.h: New.
496         * objc-next-runtime-abi-01.c: New.
497         * objc-next-runtime-abi-02.c: New.
498         * objc-lang.c: Include c-lang.h.
499         (LANG_HOOKS_EH_PERSONALITY): Removed.
500         * objc-act.h: Moved many declarations and code from objc-act.c
501         into objc-act.h to make them available outside objc-act.c.
502         (objc_eh_runtime_type): Removed.
503         (objc_eh_personality): Removed.
504         (CLASS_HAS_EXCEPTION_ATTR): New.
505         (OCTI_SUPER_SUPERFIELD_ID): New.
506         (OCTI_V1_PROP_LIST_TEMPL): New.
507         (OCTI_V1_PROP_NAME_ATTR_CHAIN): New.
508         (super_superclassfield_id): New.
509         (objc_prop_list_ptr): New.
510         (prop_names_attr_chain): New.
511         * objc-act.c: Include new runtime headers.  Moved many #defines
512         and declarations into objc-act.h and
513         objc-runtime-shared-support.h.  Made some corresponding functions
514         non-static, and moved some others into
515         objc-runtime-shared-support.c.  Moved metadata generation code
516         into the new runtime hook files.
517         (ivar_offset_hash_list): New.
518         (objc_init): Call generate_struct_value_by_array() before doing
519         any runtime initialization.  Create the appropriate runtime hook
520         structures.
521         (init_objc): Removed.  Code moved directly into objc_init.
522         (finish_objc): Removed.  Code moved directly into
523         objc_write_global_declarations.
524         (objc_write_global_declarations): Do the warn_selector checks
525         before emitting metadata.  Use a runtime hook to emit the
526         metadata.  Do not emit the metadata or do -gen-decls processing if
527         -fsyntax-only or we are producing a PCH.
528         (build_objc_exception_stuff): Renamed to
529         build_common_objc_exception_stuff.  Remove TREE_NOTHROW flag from
530         objc_exception_throw_decl.
531         (synth_module_prologue): Call runtime initialize hook instead of
532         building runtime declarations here.  Use the
533         default_constant_string_class_name runtime hook to set the
534         constant string class name.
535         (objc_build_string_object): Call the setup_const_string_class_decl
536         runtime hook instead of setup_string_decl.  Call the
537         build_const_string_constructor runtime hook instead of building
538         the string object here.
539         (get_objc_string_decl): Added prop_names_attr case.  Removed
540         gcc_unreachable() at the end.
541         (objc_begin_catch_clause): Distinguish between @catch (...) and
542         @catch (id x).  Call the begin_catch runtime hook instead of
543         building the CATCH_EXPR here.
544         (objc_finish_catch_clause): Call the finish_catch runtime hook
545         instead of adding the catch here.
546         (objc_finish_try_stmt): Call the finish_try_stmt runtime hook
547         instead of doing it here.
548         (objc_build_throw_stmt): Bail out early for error_mark_node.  Call
549         the build_exc_ptr runtime hook instead of objc_build_exc_ptr.
550         Call the build_throw_stmt runtime hook instead of building the
551         throw call here.
552         (objc_generate_cxx_cdtors): Set has_cxx_cdtors for the GNU runtime
553         as well.
554         (get_arg_type_list): Call the get_arg_type_list_base runtime hook
555         instead of building the list of arguments here.
556         (receiver_is_class_object): Call the receiver_is_class_object
557         runtime hook instead of doing the check here.  Call the
558         tag_getclass runtime hook instead of using TAG_GETCLASS.
559         (objc_finish_message_expr): Call the build_objc_method_call
560         runtime hook.
561         (objc_build_protocol_expr): Call the get_protocol_reference
562         runtime hook.
563         (objc_build_selector_expr): Call the build_selector_reference
564         runtime hook.
565         (build_ivar_reference): Call the build_ivar_reference runtime
566         hook.
567         (hash_init): Set up ivar_offset_hash_list.
568         (start_class): Recognize the objc_exception attribute and store
569         it.
570         (continue_class): Use the class_decl and metaclass_decl runtime
571         hooks.
572         (build_objc_property_accessor_helpers): Renamed to
573         build_common_objc_property_accessor_helpers.  Do not build
574         objc_copyStruct_decl, objc_getPropertyStruct_decl and
575         objc_setPropertyStruct_decl.
576         (objc_synthesize_getter): Check what struct setter/getter helper
577         is available instead of checking the type of runtime.
578         (get_super_receiver): Use the super_superclassfield_ident runtime
579         hook.  Added assert.  Use the get_class_super_ref and
580         get_category_super_ref runtime hooks.
581         (objc_v2_encode_prop_attr): New.
583 2011-01-17  Nicola Pero  <nicola.pero@meta-innovation.com>
585         PR objc/47314
586         * objc-act.c (finish_objc): When calling check_duplicates to check
587         duplicated instance methods, set 'is_class' to 0, not 1.
589 2011-01-14  Ben Elliston  <bje@au.ibm.com>
591         PR 19162
592         * objc-act.c (generate_struct_by_value_array): Do not output a
593         definition for struct_forward_array.
595 2011-01-08  Iain Sandoe  <iains@gcc.gnu.org>
597         * objc-act.c (objc_finish_foreach_loop): Mark collection expression
598         as read.
600 2011-01-02  H.J. Lu  <hongjiu.lu@intel.com>
602         * objc-act.c (check_that_protocol_is_defined): Fix a typo.
604 2011-01-02  Nicola Pero  <nicola.pero@meta-innovation.com>
606         * objc-act.c (check_that_protocol_is_defined): New.
607         (lookup_protocol): Call check_that_protocol_is_defined.
609 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
611         * objc-act.c (objc_types_are_equivalent): Fixed comparing protocol
612         lists.  Check them two-ways to fix comparisons when one protocol
613         implements the other one, or when one list contains duplicated
614         protocols.
616 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
618         * objc-act.c (objc_add_method): When emitting an error because a
619         method with the same name but conflicting types is found in the
620         same class or category interface, print a note with the location
621         of the original method.  Also, improved the error message to
622         clearly state that the conflict is due to conflicting types, and
623         produce it for protocols as well.  Emit an error if two identical
624         methods are declared in a protocol, but one is @required and the
625         other one is @optional.
627 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
629         * objc-act.c (start_class): Warn when a class attribute is
630         ignored.
631         (objc_declare_protocols): Warn when a protocol attribute in a
632         protocol forward-declaration is ignored.
633         (start_protocol): Warn when a protocol attribute is ignored.
635 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
637         * objc-act.c (objc_set_method_opt): Tidy up error messages.  In
638         particular, explicitly mention whether the error is due to the
639         @optional or @required keyword instead of mentioning
640         "@optional/@required".
642 2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>
644         PR objc/47118
645         * objc-act.c (objc_build_synchronized): Check the argument of
646         @synchronized and emit an appropriate error if it is not a valid
647         Objective-C object.  Deal gracefully with that case.  Updated
648         comments and variable names.
650 2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>
652         PR objc/47075
653         * objc-act.h (PROPERTY_REF_DEPRECATED_GETTER): New.
654         * objc-tree.def (PROPERTY_REF): Increased the number of operands
655         from 3 to 4.
656         * objc-act.c (objc_finish_message_expr): Added optional argument
657         allowing to return the deprecated method prototype for deprecated
658         methods, instead of immediately emitting the deprecation warning.
659         (objc_maybe_build_component_ref): Do not warn for a deprecated
660         property.  When building the getter call, get the deprecated
661         method prototype from objc_finish_message_expr() and put it into
662         the PROPERTY_REF.
663         (objc_build_class_component_ref): Same change.
664         (finish_class): Mark the getter and setter as deprecated if they
665         are generated from a deprecated property.
666         (objc_gimplify_property_ref): If the getter is deprecated, emit a
667         deprecation warning.
668         (objc_build_setter_call, objc_build_message_expr,
669         objc_finish_foreach_loop): Updated call to
670         objc_finish_message_expr.
672 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
674         PR objc/47076
675         * objc-act.c (lookup_protocol): Added 'definition_required'
676         argument.  If 'definition_required', and the protocol is not
677         defined, emit a warning.
678         (objc_declare_protocols): Updated call to lookup_protocol.
679         (start_protocol): Same change.
680         (check_protocol_recursively): Same change.
681         (objc_build_protocol_expr): Same change.
682         (lookup_and_install_protocols): Added definition_required argument.
683         Pass it to lookup_protocol.
684         (objc_get_protocol_qualified_type): Updated call to
685         lookup_and_install_protocols.
686         (start_class): Updated calls to lookup_and_install_protocols; pass
687         true to 'definition_required' to get the warnings.
688         (start_protocol): Updated calls to lookup_and_install_protocols.
690 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
692         * objc-act.c (objc_start_category_interface): Produce an error if
693         a class extension is found after the class @implementation.
695 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
697         PR objc/47073
698         * objc-act.c (encode_method_prototype): Fixed both location and
699         format string of error "type %qT does not have a known size".
701 2010-12-26  Nicola Pero  <nicola.pero@meta-innovation.com>
703         * config-lang.in (gtfiles): Added c-family/c-cppbuiltin.c.
705 2010-12-22  Nathan Froyd  <froydnj@codesourcery.com>
707         * objc-act.c (next_sjlj_build_enter_and_setjmp): Use prototype_p.
709 2010-12-18  Nicola Pero  <nicola.pero@meta-innovation.com>
711         * objc-act.c (objc_init): Call using_eh_for_cleanups.
712         (objc_init_exceptions): Renamed to objc_maybe_warn_exceptions.  Do
713         not call using_eh_for_cleanups.
714         (objc_begin_try_stmt): Do not call objc_init_exceptions.
715         (objc_build_throw_stmt): Updated call to
716         objc_maybe_warn_exceptions.
718 2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
720         * objc/objc-act.c (objc_eh_personality): Select personality name on
721         runtime.
722         (objc_init_exceptions): New.
723         (objc_begin_try_stmt): Use objc_init_exceptions.
724         (objc_build_throw_stmt): Likewise.
726 2010-12-10  Nicola Pero  <nicola.pero@meta-innovation.com>
728         * objc-act.c (objc_in_class_extension): New.
729         (objc_start_category_interface): If -fobjc-std=objc1
730         was specified, produce an error if a class extension is used.
731         (objc_finish_interface): Reset objc_in_class_extension to false.
732         (objc_add_property_declaration): Allow a class extension to extend
733         readonly properties in the main @interface to be readwrite.
734         (start_class): Added code to deal with class extensions.  In that
735         case, return the existing interface after adding any additional
736         protocols to it and setting objc_in_class_extension to true.
737         (continue_class): If in a class extension, do not generate the
738         instance variable template.
740 2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>
742         * objc-act.c (objc_build_throw_stmt): Check that the argument of
743         @throw is an object and emit an error if not.
745 2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>
747         * objc-act.c (objc_finish_foreach_loop): Use error_at() instead of
748         error() when printing an error about the iterating variable or
749         collection not being an object.
751 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
753         * objc-act.c (objc_finish_foreach_loop): Mark the
754         object_expression as used.
756 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
758         * objc-act.c: Include c-family/c-objc.h.
759         * objc-lang.c: Same change.
760         * Make-lang.in (objc/objc-act.o): Depend on
761         c-family/c-objc.h.
762         (objc/objc-lang.o): Same change.
763         * config-lang.in (gtfiles): Added c-family/c-objc.h.
765 2010-12-02  Joseph Myers  <joseph@codesourcery.com>
767         * lang-specs.h: Don't handle -ftraditional.
769 2010-12-02  Nicola Pero  <nicola.pero@meta-innovation.com>
771         * objc-act.c (objc_build_throw_stmt): Return error_mark_node and
772         not NULL_TREE when a @throw is used outside of a @catch block.
774 2010-11-30  Nicola Pero  <nicola.pero@meta-innovation.com>
776         * objc-act.c (objc_build_volatilized_type): Removed.
777         (objc_non_volatilized_type): Removed.
778         (objc_type_quals_match): Removed.
779         (local_variables_to_volatilize): New.
780         (objc_volatilize_decl): Add the decl to volatilize to
781         local_variables_to_volatilize, but don't volatilize it yet.
782         (objc_finish_function): New.
783         * objc-act.h (local_variables_to_volatilize): New.
785 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
786             Mike Stump  <mikestump@comcast.net>
788         Allow 'make check-objc -j2'
789         * Make-lang.in (lang_checks_parallelized): New.
790         (check_objc_parallelize): New.
792 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
794         * objc-act.c (start_class): When a class is reimplemented,
795         generate an error and avoid adding the class to the list of
796         implemented classes again, but do not return error_mark_node.
798 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
800         * objc-act.c (objc_maybe_build_component_ref): Removed TODO.
802 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
804         * objc-act.c (objc_eh_runtime_type): Avoid ICE if error_mark_node
805         is passed as argument.
806         (objc_begin_catch_clause): Added code to deal with an
807         error_mark_node or NULL_TREE argument.  Improved checks for
808         invalid arguments.  Added code to traverse typedefs.
810 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
812         * objc-act.c (objc_demangle): Return immediately if the string is
813         too short.  Detect names that do not need demangling, and return
814         them unchanged.
816 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
818         Implemented optional properties.
819         * objc-act.h (PROPERTY_OPTIONAL): New.
820         * objc-act.c (objc_add_property_declaration): Set
821         PROPERTY_OPTIONAL if appropriate.
822         (finish_class): When generating definitions of setter and getter
823         methods associated with a property for a protocol, mark them as
824         optional if the property is optional.
825         (maybe_make_artificial_property_decl): Added 'getter_name'
826         argument.  Set PROPERTY_OPTIONAL.
827         (objc_maybe_build_component_ref): Updated calls to
828         maybe_make_artificial_property_decl.  Added code for optional,
829         readonly properties.
830         (objc_build_class_component_ref): Updated call to
831         maybe_make_artificial_property_decl.
833 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
835         * objc-act.c (objc_build_struct): Fixed loops that save and
836         restore TYPE_OBJC_INFO to iterate over all variants of the type; a
837         special case for the current type is then no longer required.
838         Duplicate TYPE_LANG_SPECIFIC for each type before restoring
839         TYPE_OBJC_INFO.
840         (objc_get_protocol_qualified_type): Updated comments.
842 2010-11-25  Nicola Pero  <nicola.pero@meta-innovation.com>
844         * objc-act.c (objc_build_struct): Install TYPE_OBJC_INTERFACE
845         after finish_struct, not before, otherwise it may be wiped out by
846         it.  This fixes spurious warnings when a class has more than 15
847         instance variables.
849 2010-11-23  Nicola Pero  <nicola.pero@meta-innovation.com>
851         PR objc/24358
852         * lang-specs.h: Added objective-c-cpp-output.  Mapped .mi to
853         objective-c-cpp-output instead of objc-cpp-output.  Print a
854         deprecation note every time objc-cpp-output is requested.
856 2010-11-22  Joseph Myers  <joseph@codesourcery.com>
858         * objc-act.c (write_symbols): Don't declare here.
860 2010-11-22  Nicola Pero  <nicola.pero@meta-innovation.com>
862         PR objc/41108
863         * objc-act.c (objc_generate_write_barrier): Added assert to make sure
864         this function is only called with the next runtime.
866 2010-11-20  Jakub Jelinek  <jakub@redhat.com>
868         PR c/46547
869         * objc-act.c (in_late_binary_op): Remove.
871 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
873         * objc-act.c (objc_start_class_interface): Do not warn that class
874         attributes are unimplemented.  Pass the attributes to start_class.
875         (objc_start_category_interface): Updated call to start_class.
876         (objc_start_class_implementation): Same change.
877         (objc_start_category_implementation): Same change.
878         (objc_build_class_component_ref): Warn if the class is deprecated.
879         (build_private_template): Mark the template as deprecated if the
880         class is deprecated.
881         (start_class): Added 'attributes' argument.  Emit a warning if
882         using a deprecated class as superclass of a class, or original
883         class of a category.  Recognize the 'deprecated' attribute when
884         starting and interface, and mark the interface with
885         TREE_DEPRECATED if present.  Store attributes in the interface.
887 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
889         * objc-act.c (lookup_protocol): Added 'warn_if_deprecated'
890         argument.  If it is 'true' and the protocol is deprecated, emit a
891         deprecation warning.
892         (objc_start_protocol): Do not warn that protocol attributes are
893         unimplemented.  Pass the attributes to start_protocol.
894         (start_protocol): Added attributes argument.  Recognize the
895         'deprecated' attribute and mark the protocols with TREE_DEPRECATED
896         if present.  Store attributes in the protocol.
897         (objc_declare_protocols): Added 'attributes' argument.  Recognize
898         the 'deprecated' attribute and mark the protocols with
899         TREE_DEPRECATED if present.  Store attributes in the protocol.
900         Updated call to lookup_protocol.
901         (objc_build_protocol_expr): Updated call to lookup_protocol.
902         (check_protocol_recursively): Same change.
903         (lookup_and_install_protocols): Same change.
904         * objc-act.h: Updated comments.
906 2010-11-17  Nicola Pero  <nicola.pero@meta-innovation.com>
908         * objc-act.c (lookup_method_in_protocol_list): Search methods in
909         PROTOCOL_OPTIONAL_CLS_METHODS / PROTOCOL_OPTIONAL_NST_METHODS if
910         they are not found in PROTOCOL_CLS_METHODS / PROTOCOL_NST_METHODS.
912 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
914         * objc-act.c (objc_build_setter_call): New.
915         (objc_maybe_build_modify_expr): Rewritten to build a compound
916         statement.
917         (objc_build_incr_expr_for_property_ref): Updated calls to
918         objc_maybe_build_modify_expr to call objc_build_setter_call
919         instead.  Use build_modify_expr () instead of build2 (MODIFY_EXPR,
920         ...).  Use convert () instead of build1 (NOP_EXPR, ...).  Use
921         TREE_NO_WARNING on the final compound statement to silence C++
922         warnings.
924 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
926         * objc-act.c (objc_build_incr_expr_for_property_ref): New.
927         (objc_create_temporary_var): Moved it towards the beginning of the
928         file so that objc_build_incr_expr_for_property_ref can use it.
930 2010-11-14  Nicola Pero  <nicola.pero@meta-innovation.com>
932         * objc-act.c (objc_add_property_declaration): Check that the decl
933         we received from the parser is a FIELD_DECL; reject array and
934         bitfield properties.  Convert the warning when a property is
935         readonly and a setter is specified into an error.  Convert errors
936         when a property declaration does not match a property declaration
937         in a superclass into warnings.
938         (objc_add_synthesize_declaration_for_property): Use
939         DECL_BIT_FIELD_TYPE to determine the type of an instance variable
940         if it is a bitfield.  Throw an error if we are asked to synthesize
941         setters/getters for a bitfield instance variable but the property
942         is not appropriate - it must be assign and nonatomic.  If the
943         property is readonly, allow the instance variable type to be a
944         specialization of the property type.
945         (objc_type_valid_for_messaging): Fixed returning 'false' for a
946         Class qualified with a protocol when the 'accept_classes' argument
947         is 'false'.
949 2010-11-13  Nicola Pero  <nicola.pero@meta-innovation.com>
951         * objc-act.c (objc_get_protocol_qualified_type): detect cases
952         where we are asked to attach a protocol to something which is not
953         an Objective-C object type, and produce an error.
955 2010-11-11  Nicola Pero  <nicola.pero@meta-innovation.com>
957         * objc-act.c (objc_add_property_declaration): Check that the type
958         of a property and of an inherited property match.
959         (objc_maybe_build_component_ref): Tidied up indentation and
960         comments.
961         (objc_common_type): Added new type of check (-5).
962         (objc_add_synthesize_declaration_for_property): Check that the
963         property to synthesize and the instance variable to use have the
964         same type.
966 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
968         * objc-act.c (objc_init): Use %' in diagnostic.
969         (objc_set_method_opt): Remove trailing '.' from diagnostic.
971 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
973         * objc-act.c (dump_base_name): Don't declare here.
975 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
977         * objc-act.c (objc_add_dynamic_declaration_for_property): Do not
978         search for the @property declation only in the current context,
979         but also in inherited properties.  Do not mark the original
980         PROPERTY_DECL in the @interface or @protocol with
981         PROPERTY_DYNAMIC.
982         (check_methods): To check if a method is associated with a
983         @dynamic property, search for the property in IMPL_PROPERTY_DECL.
984         (check_accessible_methods): Same change.
985         * objc-act.h: Updated comment.
987 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
989         * objc-act.c (objc_add_synthesize_declaration_for_property):
990         Iterate over IMPL_PROPERTY_DECL, not CLASS_PROPERTY_DECL, when
991         checking for an existing @synthesize or @dynamic declaration.
992         Search for an inherited @property declaration if none is found in
993         the local interface.  If the required instance variable does not
994         exist, return instead of trying to continue to prevent a compiler
995         crash later.  Check that the instance variable is not already
996         being used by another @synthesize.
997         (objc_add_dynamic_declaration_for_property): Iterate over
998         IMPL_PROPERTY_DECL, not CLASS_PROPERTY_DECL, when checking for an
999         existing @synthesize or @dynamic declaration.
1000         (objc_synthesize_getter): Search for the getter declaration in
1001         protocols and superclasses as well.
1002         (objc_synthesize_setter): Search for the setter declaration in
1003         protocols and superclasses as well.
1005 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
1007         * objc-act.c (lookup_property): When checking categories, also
1008         check the protocols attached to each.
1009         (objc_add_property_declaration): Determine the
1010         PROPERTY_SETTER_NAME and PROPERTY_GETTER_NAME here.  Tidied up
1011         error message.  Search for an existing property declaration with
1012         the same name which would be inherited from the class hiearchy,
1013         and produce an error if it has incompatible attributes.
1014         (check_methods): Changed second parameter.  If the method is a
1015         getter or setter for a property, do not warn if it is inherited as
1016         opposed to implemented directly in the class.
1017         (check_protocol): Updated calls to check_methods.
1018         (finish_class): Do not determine the PROPERTY_SETTER_NAME and
1019         PROPERTY_GETTER_NAME here; this is now done earlier, in
1020         objc_add_property_declaration.
1021         * objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Added comments.
1023 2010-11-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1025         Fixed using the Objective-C 2.0 dot-syntax with self and super.
1026         * objc-act.c (OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS): New.
1027         (maybe_make_artificial_property_decl): Added 'implementation'
1028         argument.  Use OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS when
1029         looking up getters or setters for a class.  If an implementation
1030         is specified, search it as well for a getter or setter.
1031         (objc_maybe_build_component_ref): Updated calls to
1032         maybe_make_artificial_property_decl; added code to deal with
1033         'self' and 'super' and with methods declared locally in the
1034         implementation.  Store the getter call expression in the
1035         PROPERTY_REF instead of throwing it away.
1036         (objc_build_class_component_ref): Updated calls to
1037         maybe_make_artificial_property_decl, and store the getter call
1038         expression in PROPERTY_REF instead of throwing it away.
1039         (lookup_method_static): Implemented
1040         OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS option.
1041         (objc_gimplify_property_ref): Do not build the getter method call
1042         here; instead use the one stored in the PROPERTY_REF.  If it's not
1043         there, produce helpful error messages.
1044         * objc-tree.def (PROPERTY_REF): Increased the number of operands
1045         from 2 to 3.  Updated comments.
1046         * objc-act.h (PROPERTY_REF_GETTER_CALL): New.
1048 2010-11-06  Iain Sandoe  <iains@gcc.gnu.org>
1050         PR target/44981
1051         * objc-act.c (objc_build_string_object): Amend for renamed hook.
1052         (objc_string_ref_type_p): New.
1053         (objc_check_format_arg): New.
1055 2010-11-04  Nicola Pero  <nicola.pero@meta-innovation.com>
1057         Fixed using the Objective-C 2.0 dot-syntax with class names.
1058         * objc-act.c (objc_build_class_component_ref): New.
1060 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
1062         * objc-act.c (objc_add_dynamic_declaration): Allow @dynamic in a
1063         category.
1064         (objc_type_valid_for_messaging): Added 'accept_classes' argument;
1065         if set to 'true', return 'true' for Class objects.  Do not remove
1066         more than on pointer indirection.
1067         (objc_add_property_declaration): Only warn about 'assign'
1068         semantics for Objective-C objects if warn_property_assign_default;
1069         and do not warn if the property is readonly or if the type is a Class.
1070         (objc_finish_foreach_loop): Updated calls to
1071         objc_type_valid_for_messaging.
1073 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
1075         Implemented -fobjc-std=objc1 flag.
1076         * objc-act.c (objc_start_class_interface): If attributes are
1077         specified when flag_objc1_only is set, print an error.
1078         (objc_start_category_interface): Same change.
1079         (objc_start_protocol): Same change.
1080         (objc_add_method_declaration): Same change.
1081         (objc_start_method_definition): Same change.
1082         (objc_build_keyword_decl): Same change.
1083         (objc_set_visibility): If OBJC_IVAR_VIS_PACKAGE is used when
1084         flag_objc1_set is set, print an error.
1085         (objc_set_method_opt): If flag_objc1_only is set, print an error.
1086         (objc_add_property_declaration): Same change.
1087         (objc_add_synthesize_declaration): Same change.
1088         (objc_add_dynamic_declaration): Same change.
1089         (objc_finish_foreach_loop): Same change.
1090         (objc_maybe_build_component_ref): If flag_objc1_only is set,
1091         return immediately.
1093 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
1095         * objc-act.c (maybe_make_artificial_property_decl): New.
1096         (objc_maybe_build_component_ref): Call
1097         maybe_make_artificial_property_decl if a property can not be
1098         found.  Do not call objc_finish_message_expr if
1099         PROPERTY_HAS_NO_GETTER.
1100         * objc-act.h Updated comments.
1101         (PROPERTY_HAS_NO_GETTER): New.
1102         (PROPERTY_HAS_NO_SETTER): New.
1103         * objc-tree.def: Updated comment.
1105 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1107         Implemented format and noreturn attributes for Objective-C methods.
1108         * objc-act.c (objc_start_method_definition): If method attributes
1109         are specified emit a warning and ignore them.
1110         (build_objc_method_call): Moved deprecation warnings from here ...
1111         (objc_finish_message_expr): to here.  Do not emit deprecation
1112         warnings if the receiver is of type 'id'.
1113         (really_start_method): Install 'deprecation' and 'noreturn'
1114         attributes.
1115         (objc_decl_method_attributes): Carefully filter out the list of
1116         attributes, allowing only "noreturn", "format", "sentinel" and
1117         "deprecated".  In the case of "format", adjust the arguments.
1118         Always process the attributes in the same way no matter if
1119         "sentinel" is in the list or not.
1121 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1123         * objc-act.c (objc_maybe_build_component_ref): Warn about using
1124         deprecated properties.
1125         (objc_maybe_printable_name): Support PROPERTY_DECL.
1127 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1129         Implemented Objective-C 2.0 property accessors.
1130         * objc-act.h (enum objc_tree_index): Added OCTI_GET_PROPERTY_DECL,
1131         OCTI_SET_PROPERTY_DECL, OCTI_COPY_STRUCT_DECL,
1132         OCTI_GET_PROPERTY_STRUCT_DECL and OCTI_SET_PROPERTY_STRUCT_DECL.
1133         (objc_getProperty_decl): New.
1134         (objc_setProperty_decl): New.
1135         (objc_copyStruct_decl): New.
1136         (objc_getPropertyStruct_decl): New.
1137         (objc_setPropertyStruct_decl): New.
1138         * objc-act.c (build_objc_property_accessor_helpers): New.
1139         (synth_module_prologue): Call
1140         build_objc_property_accessor_helpers.
1141         (lookup_ivar): New.
1142         (objc_synthesize_getter): Implemented synthesizing getters that
1143         work with properties that are not nonatomic, assign properties.
1144         (objc_synthesize_setter): Implemented synthesizing setters that
1145         work with properties that are not nonatomic, assign properties.
1147 2010-10-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1149         Implemented Objective-C 2.0 @property, @synthesize and @dynamic.
1150         * objc-tree.def (PROPERTY_REF): New.
1151         * objc-act.h: Added comments for all the PROPERTY_ macros.
1152         (PROPERTY_NAME): Use DECL_NAME.
1153         (PROPERTY_COPIES): Removed.
1154         (PROPERTY_READONLY): Use DECL_LANG_FLAG_0 for it.
1155         (PROPERTY_NONATOMIC): New.
1156         (objc_property_assign_semantics): Make it a typedef.
1157         (PROPERTY_ASSIGN_SEMANTICS): New.
1158         (PROPERTY_DYNAMIC): New.
1159         (PROPERTY_REF_OBJECT): New.
1160         (PROPERTY_REF_PROPERTY_DECL): New.
1161         * objc-act.c (CALL_EXPR_OBJC_PROPERTY_GETTER): Removed.
1162         (in_objc_property_setter_name_context): Removed.
1163         (objc_add_property_declaration): Removed copies and ivar arguments
1164         and code supporting them.  Fixed recovering when readonly and
1165         setter attributes are specified.  Removed support for @property in
1166         @implementation context.  Updated error message.  Double-check
1167         that a property does not have a DECL_INITIAL.  Validate the
1168         property assign semantics and emit appropriate errors and
1169         warnings.  Check for duplicate property declarations.  Set
1170         DECL_SOURCE_LOCATION, TREE_DEPRECATED, PROPERTY_NONATOMIC,
1171         PROPERTY_ASSIGN_SEMANTICS and PROPERTY_DYNAMIC of the new
1172         PROPERTY_DECL.  Do not set PROPERTY_COPIES.  Set
1173         PROPERTY_IVAR_NAME to NULL_TREE.
1174         (objc_build_getter_call): Renamed to
1175         objc_maybe_build_component_ref.  If the property is not found in
1176         the interface, search in the protocol list.  Do not generate the
1177         getter call; instead, build and return a PROPERTY_REF.
1178         (objc_is_property_ref): New.
1179         (objc_setter_func_call): Removed.
1180         (get_selector_from_reference): Removed.
1181         (is_property): Removed.
1182         (objc_build_setter_call): Renamed to objc_maybe_build_modify_expr.
1183         Updated to work on a PROPERTY_REF and use the PROPERTY_DECL from
1184         the PROPERTY_REF.  Generate an error if the property is read-only.
1185         (build_property_reference): Removed.
1186         (objc_finish_message_expr): Removed check to produce "readonly
1187         property can not be set" error when
1188         in_objc_property_setter_name_context.  We now generate the error
1189         earlier, in objc_maybe_build_modify_expr, which will only generate
1190         the setter call if the property is readwrite.
1191         (check_methods): Recognize dynamic properties.
1192         (check_methods_accessible): Same change.
1193         (objc_build_property_ivar_name): Removed.
1194         (objc_build_property_setter_name): Dropped bool argument.  Always
1195         add the ':' at the end.
1196         (objc_gen_one_property_datum): Removed.
1197         (objc_process_getter_setter): Removed.
1198         (objc_synthesize_getter): Mark 'klass' argument as unused.  Use
1199         PROPERTY_GETTER_NAME instead of PROPERTY_NAME.  Set the
1200         DECL_SOURCE_LOCATION of the new method to be the same as the one
1201         for the @synthesize.  Always use PROPERTY_IVAR_NAME as it is
1202         instead of trying to guess what it should be.  Removed use of
1203         CLASS_IVARS.  Use the location of @synthesize for c_finish_return
1204         and c_end_compound_statement.
1205         (objc_synthesize_setter): Mark 'klass' argument as unused.  Use
1206         PROPERTY_SETTER_NAME instead of trying to guess what it should be.
1207         Set the DECL_SOURCE_LOCATION of the new method to be the same as
1208         the one for the @synthesize.  Always use PROPERTY_IVAR_NAME as it
1209         is instead of trying to guess what it should be.  Removed use of
1210         CLASS_IVARS.  Use the location of @synthesize for c_finish_return
1211         and c_end_compound_statement.  Emit an error and keep going,
1212         instead of aborting, if the setter prototype does not have the
1213         expected argument.
1214         (objc_add_synthesize_declaration_for_property): New.
1215         (objc_add_synthesize_declaration): Removed ATTRIBUTE_UNUSED from
1216         all arguments.  Improved error message.  Filled in the rest of the
1217         function, which used to be a placeholder, with an actual
1218         implementation.
1219         (objc_add_dynamic_declaration_for_property): New.
1220         (objc_add_dynamic_declaration): Removed ATTRIBUTE_UNUSED from all
1221         arguments.  Improved error message.  Filled in the rest of the
1222         function, which used to be a placeholder, with an actual
1223         implementation.
1224         (objc_gen_property_data): Rewritten.
1225         (finish_class): Added explicit switch cases for
1226         CLASS_INTERFACE_TYPE, CATEGORY_INTERFACE_TYPE and
1227         PROTOCOL_INTERFACE_TYPE.  Added a default switch case which is
1228         gcc_unreachable.  Rewritten the processing of properties, in
1229         particular to not synthesize prototypes for getters and setters if
1230         they already exist and to install the getter and setter names into
1231         PROPERTY_GETTER_NAME and PROPERTY_SETTER_NAME.  Do not generate
1232         warnings about setter, getter and ivar property attributes.
1233         (objc_lookup_ivar): Removed support for properties.
1234         (objc_gimplify_property_ref): New.
1235         (objc_gimplify_expr): Use a switch.  In case of a PROPERTY_REF, call
1236         objc_gimplify_property_ref.
1238 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1240         * objc-act.c (objc_add_property_declaration): Added arguments to
1241         pass the various property attributes that were parsed with the
1242         property declaration.  Process arguments to determine the final
1243         property attributes and produce error messages as appropriate.
1244         Added temporary code to keep the compiler silent about variables
1245         set but not used - for new attributes that are only checked but
1246         have no effect yet.
1247         (property_readonly): Removed.
1248         (property_setter): Removed.
1249         (property_getter): Removed.
1250         (property_ivar): Removed.
1251         (property_copies): Removed.
1252         (objc_set_property_attr): Removed.
1253         * objc-act.h (enum property_assign_semantics): New.
1255 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1257         * objc-act.c (objc_add_property_variable): Renamed to
1258         objc_add_property_declaration.  Added location argument.  Updated
1259         warnings and errors to use it.  Use error, not fatal_error, if a
1260         property declaration is found outside an interface or
1261         implementation context.
1263 2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>
1265         * objc-act.c (objc_build_keyword_decl): Updated comments.  Do not
1266         emit a warning that method parameter attributes are unimplemented.
1267         Instead, store them into DECL_ATTRIBUTES of the KEYWORD_DECL.
1268         (start_method_def): Copy attributes from each KEYWORD_DECL into
1269         the corresponding PARM_DECL.
1270         (objc_warn_deprecated_use): Removed.
1271         (build_objc_method_call): Call warn_deprecated_use, not
1272         objc_warn_deprecated_use.
1273         (objc_maybe_printable_name): Do not try to get the identifier name
1274         of DECLs that we don't recognize.  Immediately return NULL for them.
1275         (objc_printable_name): Removed C++-specific case, which is no
1276         longer used.  Updated comments.
1278 2010-10-23  Nicola Pero  <nicola.pero@meta-innovation.com>
1280         * objc-act.c (OBJC_GEN_METHOD_LABEL): Updated comments.
1281         (objc_demangle): Return NULL if demangling can not be done because
1282         the string to demangle is not an Objective-C mangled method name.
1283         Be smarter in demangling method names so that at least for methods
1284         with no arguments we are able to almost always demangle '_' correctly.
1285         Updated comments.
1286         (objc_maybe_printable_name): New.
1287         (objc_printable_name): Call objc_maybe_printable_name.  If it
1288         returns NULL, call cxx_printable_name in Objective-C++.
1290 2010-10-21  Iain Sandoe  <iains@gcc.gnu.org>
1292         Based on the CFString implementation in FSF apple/trunk branch.
1294         * objc/objc-act.c (objc_build_string_object): Handle CFStrings.
1296 2010-10-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1298         * objc-act.c (get_objc_string_decl): Use a switch instead of a
1299         chain of ifs.  Use gcc_unreachable instead of abort.
1300         (add_objc_string): Same change.
1301         (generate_protocol_list): Same change - twice.
1302         (synth_id_with_class_suffix): Same change.
1303         (build_keyword_selector): Same change - twice.
1304         (objc_build_message_expr): Same change.
1305         (objc_build_selector_expr): Same change.
1306         (check_methods): Same change - and added missing gcc_unreachable
1307         for default case.
1308         (check_methods_accessible): Same change - twice, and added missing
1309         gcc_unreachable for default case in one of them.
1310         (start_class): Same change - and added missing gcc_unreachable for
1311         default case.
1312         (continue_class): Same change.
1313         (objc_gen_property_data): Same change.
1314         (finish_class): Same change.
1315         (encode_type_qualifiers): Added missing gcc_unreachable.
1316         (encode_type): Small code tidy up to reduce duplicated code.  Use
1317         gcc_unreachable instead of abort - twice.
1318         (encode_gnu_bitfield): Use a switch instead of a chain of ifs -
1319         twice.  Added missing gcc_unreachable for default case - twice.
1320         (dump_interface): Use a switch instead of a chain of ifs.
1321         (handle_impent): Same change.
1323 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1325         * objc-act.h (objc_inherit_code): Removed.
1326         * objc-act.c (objc_inherit_code): Removed.
1327         (objc_set_method_type): Removed.
1328         (objc_build_method_signature): Added is_class_method argument.
1329         Use it instead of the global objc_inherit_code variable.
1330         (objc_add_method_declaration): Same change.
1331         (objc_start_method_definition): Same change.
1332         (objc_generate_cxx_ctor_or_dtor): Updated call to
1333         objc_start_method_definition.  Do not call objc_set_method_type.
1334         (adjust_type_for_id_default): Mark as inline.
1335         (objc_synthesize_getter): Updated call to
1336         objc_start_method_definition.  Do not set objc_inherit_code.
1337         (objc_synthesize_setter): Updated call to
1338         objc_start_method_definition.  Do not set objc_inherit_code.
1340 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1342         Merge from 'apple/trunk' branch on FSF servers.  Obvious updates
1343         to gcc_alloc_xxx calls in hash_init and hash_class_name_enter to
1344         get it to compile in the current trunk.
1346         2006-01-27 Fariborz Jahanian <fjahanian@apple.com>
1348         Radar 4345837
1349         * objc/objc-act.c (hash_class_name_enter): New.
1350         (hash_class_name_lookup): New.
1351         (objc_declare_alias): Enter alias name into hash table.
1352         (objc_declare_class): Enter class name into hash table.
1353         (objc_is_class_name): Do a hash look up of class name.
1354         (hash_init): Initialize the two new hash tables.
1355         * objc-act.h: Added cls_name_hash_list and als_name_hash_list
1356         declarations, removed class_chain and alias_chain.
1358 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1360         * objc-lang.c (finish_file): Removed.
1361         * objc-act.c (objc_finish_file): Renamed to
1362         objc_write_global_declarations.  Do not try to instantiate C++
1363         templates when compiling Objective-C++ as this is now
1364         automatically done before this function is called.  Do not check
1365         for syntax-only run or PCH generation as this is done by the
1366         callers.
1367         * objc-act.h (objc_finish_file): Removed.
1369 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1371         Implemented parsing @synthesize and @dynamic for
1372         Objective-C/Objective-C++.
1373         * objc-act.c (objc_add_synthesize_declaration): New.
1374         (objc_add_dynamic_declaration): New.
1376 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1378         * objc-act.c (lookup_and_install_protocols): Return NULL if passed
1379         error_mark_node.
1381 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1383         Merge from 'apple/trunk' branch on FSF servers.
1385         2006-03-10  Fariborz Jahanian <fjahanian@apple.com>
1387         Radar 4407151
1388         * objc/objc-act.c (objc_is_class_name): template parameter is not
1389         an objective class name.
1390         (objc_generate_cxx_cdtors): Check for the null
1391         objc_implementation_context.
1393 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1395         Merge from 'apple/trunk' branch on FSF servers.
1397         2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
1399         Radar 4330422
1400         * objc/objc-act.c (objc_non_volatilized_type): New
1402         2005-10-07  Fariborz Jahanian <fjahanian@apple.com>
1404         Radar 4204796
1405         * objc-act.c (objc_build_volatilized_type): Build 'volatilzed'
1406         types with proper attribute set and correctly.
1407         (objc_volatilize_decl): Remove unneeded code.
1408         (objc_type_quals_match): Use the new attribute to check on
1409         'volatilzed' type.
1410         (hash_init): removed unneeded code.
1412 2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
1414         Merge from 'apple/trunk' branch on FSF servers.
1416         2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
1418         Radar 4133425
1419         * objc-act.c (objc_diagnose_private_ivar): New.
1421 2010-10-17  Iain Sandoe  <iains@gcc.gnu.org>
1423         * objc-act.c: Rename 'objc_public_flag' to  objc_ivar_visibility and
1424         make its type 'objc_ivar_visibility_kind'.
1425         (objc_start_class_interface): Update to use visibility enum.
1426         (objc_start_class_implementation): Likewise.
1427         (objc_set_visibility): Update to use visibility enum, warn that
1428         @package is handle as per @public.
1429         (add_instance_variable): Handle OBJC_IVAR_VIS_PACKAGE.
1430         * objc-act.h: Rename 'objc_public_flag' to  objc_ivar_visibility and
1431         make its type 'objc_ivar_visibility_kind'.
1433 2010-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1435         merge from FSF apple 'trunk' branch.
1436         2006 Fariborz Jahanian <fjahanian@apple.com>
1438         Radars 4436866, 4505126, 4506903, 4517826
1439         * objc-act.c (CALL_EXPR_OBJC_PROPERTY_GETTER): New.
1440         property_readonly, property_getter, property_setter, property_ivar,
1441         property_copies, in_objc_property_setter_name_context: New vars.
1442         (objc_set_property_attr): New.
1443         (objc_add_property_variable): New.
1444         (lookup_property_in_list): New.
1445         (lookup_property): New.
1446         (objc_build_getter_call): New.
1447         (objc_setter_func_call): New.
1448         (get_selector_from_reference): New.
1449         (objc_build_setter_call): New.
1450         (is_property): New.
1451         (build_property_reference): New.
1452         (objc_finish_message_expr): Detect readonly property and warn.
1453         (objc_build_property_ivar_name): New.
1454         (objc_build_property_setter_name): New.
1455         (objc_gen_one_property_datum): New.
1456         (objc_process_getter_setter): New.
1457         (objc_synthesize_getter): New.
1458         (objc_synthesize_setter): New.
1459         (objc_gen_property_data): New.
1460         (finish_class): Generate property data.
1461         (comp_proto_with_proto): Separated from ...
1462         (match_proto_with_proto): ... New.
1463         (objc_lookup_ivar): Handle properties.
1464         * objc-tree.def (PROPERTY_DECL): New tree code.
1465         * objc-act.h: CLASS_LANG_SLOT_ELTS, PROTOCOL_LANG_SLOT_ELTS update size.
1466         (METHOD_PROPERTY_CONTEXT): New.
1467         (PROPERTY_NAME): New.
1468         (PROPERTY_GETTER_NAME): New.
1469         (PROPERTY_SETTER_NAME): New.
1470         (PROPERTY_IVAR_NAME): New.
1471         (PROPERTY_READONLY): New.
1472         (PROPERTY_COPIES): New.
1473         (TOTAL_CLASS_RAW_IVARS): New.
1474         (CLASS_PROPERTY_DECL): New.
1475         (IMPL_PROPERTY_DECL): New.
1476         * objc-lang.c (objc_init_ts): Update fields for property_decl.
1478 2010-10-13  Richard Henderson  <rth@redhat.com>
1480         * objc-act.c (objc_eh_personality): Update call to
1481         build_personality_function.
1483 2010-10-13  Iain Sandoe  <iains@gcc.gnu.org>
1485         merge from FSF apple 'trunk' branch.
1487         2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
1488         Radar 3803157 (method attributes)
1489         * objc/objc-act.h (METHOD_TYPE_ATTRIBUTES): New macro.
1490         * objc/objc-act.c (objc_decl_method_attributes): New.
1491         (objc_add_method_declaration): Process method's attribute.
1492         (objc_start_method_definition): Ditto.
1493         (build_objc_method_call): Inject method attribute into
1494         built function type.
1495         (objc_method_decl): New.
1496         (objc_warn_deprecated)use): New.
1498 2010-10-07  Andi Kleen  <ak@linux.intel.com>
1500         * Make-lang.in (cc1obj-dummy): Remove.
1501         (cc1obj-checksum): Change to run checksum over object files
1502         and options only.
1504 2010-10-07  Nicola Pero  <nicola.pero@meta-innovation.com>
1506         PR objc/45925
1507         * objc-act.c (objc_finish_foreach_loop): Convert return value of
1508         countByEnumeratingWithState:objects:count: to long unsigned int.
1510 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1512         * objc-act.c (build_objc_method_call): Replace calls to
1513         build_function_call () with the VEC equivalent.  Construct parameter
1514         lists as VECs.
1516 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1518         * objc-act.c (objc_build_message_expr):  Call mark_exp_read () to
1519         signal that the receiver has been used.
1521 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1523         * README: Obsolete file removed.
1525 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1527         Implemented fast enumeration for Objective-C.
1528         * objc-act.c (build_fast_enumeration_state_template): New.
1529         (TAG_ENUMERATION_MUTATION): New.
1530         (TAG_FAST_ENUMERATION_STATE): New.
1531         (synth_module_prologue): Call build_fast_enumeration_state_template() and set up
1532         objc_enumeration_mutation_decl.
1533         (objc_create_temporary_var): Allow providing a name to temporary
1534         variables.
1535         (objc_build_exc_ptr): Updated calls to
1536         objc_create_temporary_var().
1537         (next_sjlj_build_try_catch_finally): Same change.
1538         (objc_finish_foreach_loop): New.
1539         * objc-act.h: Added OCTI_FAST_ENUM_STATE_TEMP,
1540         OCTI_ENUM_MUTATION_DECL, objc_fast_enumeration_state_template,
1541         objc_enumeration_mutation_decl.
1543         Merge from 'apple/trunk' branch on FSF servers.
1545         2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
1547         Radar 4507230
1548         * objc-act.c (objc_type_valid_for_messaging): New routine to check
1549         for valid objc object types.
1550         (objc_finish_foreach_loop): Check for invalid objc objects in
1551         foreach header.
1553 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1555         Merge from 'apple/trunk' branch on FSF servers.
1557         2005-10-17  Fariborz Jahanian <fjahanian@apple.com>
1559         Radar 4290840
1560         * objc-act.c (objc_start_method_definition): Check for
1561         error_mark_node for the selector name and make a quick exit.
1563 2010-10-04  Andi Kleen <ak@linux.intel.com>
1565         * Make-lang.in (cc1obj-dummy, cc1obj): Add + to build rule.
1567 2010-09-30  Iain Sandoe  <iains@gcc.gnu.org>
1569         merge from FSF 'apple/trunk' branch.
1570         2006-01-30  Fariborz Jahanian <fjahanian@apple.com>
1572        Radar 4386773
1573        * objc/objc-act.c (objc_set_method_opt): New function.
1574        (objc_start_protocol, objc_finish_interface): Reset
1575        objc_method_optional_flag flag.
1576        (objc_add_method_declaration): Pass on the new
1577        flag to objc_add_method.
1578        (objc_add_method): Add optional methods to new chain in
1579        the protocol class.
1580        * objc/objc-act.h (CLASS_OPTIONAL_CLS_METHODS,
1581        CLASS_OPTIONAL_NST_METHODS): New macros accessing a protocol
1582        class's optional method chains.
1584 2010-09-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1586         Merge from 'apple/trunk' branch on FSF servers.
1588         2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
1590         Radar 4278236
1591         * objc-act.c (objc_declare_class): Pick the right
1592         type tree.
1594 2010-09-29  Nicola Pero  <nicola.pero@meta-innovation.com>
1596         Merge from 'apple/trunk' branch on FSF servers.
1598         2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
1600         Radar 4281748
1601         * objc-act.c (objc_check_global_decl): New
1603 2010-09-29  Nicola Pero  <nicola.pero@meta-innovation.com>
1605         * objc-act.c (objc_is_reserved_word): Removed.
1607 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1609         * objc-act.c (objc_add_method_declaration): Handle and ignore
1610         attributes.
1611         (objc_start_method_definition): Likewise.
1612         (objc_generate_cxx_ctor_or_dtor): Pass NULL attributes to ctor/dtor.
1613         (objc_build_keyword_decl): Handle and ignore attributes.
1615 2010-09-28  Richard Henderson  <rth@redhat.com>
1617         * objc-act.c (objc_eh_personality): Use targetm.except_unwind_info.
1619 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1621         * objc-act.c (objc_start_class_interface): Handle and ignore attributes.
1622         (objc_start_category_interface): Likewise.
1623         (objc_start_protocol): Likewise.
1625 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1627         Merge from 'apple/trunk' branch on FSF servers.
1629         2005-08-23  Stuart Hastings <stuart@apple.com>
1630                     Ziemowit Laski  <zlaski@apple.com>
1632         Radar 4209854
1633         * objc-act.c (objc_decay_parm_type): New function.
1634         (get_arg_type_list): Decay types for all named arguments.
1635         (objc_push_parm): Rebuild the PARM_DECL if its type has
1636         been decayed.
1638 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1640         * objc-act.c (encode_type): Fixed encoding enums with the next
1641         runtime.
1643 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1645         Merge from 'apple/trunk' branch on FSF servers.
1647         2005-07-18  Ziemowit Laski  <zlaski@apple.com>
1649         Radar 4175534
1650         * objc-act.c (objc_compare_types): A new silent comparison
1651         mode (-4), differing from regular comparison (-3) in that
1652         'false' is returned instead of issuing warnings.
1654 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1656         * objc-act.c (encode_type): Do not add 'r' with the next runtime.
1657         (encode_aggregate_within): Reorganized code to be more readable.
1658         (encode_aggregate_fields): Updated second argument to be 'bool'
1659         instead of 'int'.
1661 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1663         PR objc/45763
1664         PR objc/25450
1665         PR objc/25464
1666         * objc-act.c: Improved comments for encoding functions.
1667         (encode_aggregate_within): For the GNU runtime, rewritten some
1668         obsfuscated code to clarify the various cases.
1669         (encode_aggregate): Function removed.
1670         (encode_array): Generate an error if asked to encode an incomplete
1671         array as part of generating instance variables.  Else, when
1672         encoding an incomplete array inside a structure, encode it as an
1673         array of zero size.
1674         (encode_pointer): For the GNU runtime, fixed encoding 'BOOL *' as
1675         '^c' instead of '*'.
1676         (encode_gnu_bitfield): Encode enumerated types exactly in the same
1677         type as integer types instead of using a hardcoded 'i'.  If asked
1678         to encode a non-integer type as a bitfield, do not abort
1679         compilation immediately; instead generate an error, then skip the
1680         type.
1681         (encode_type): Use a 'switch' instead of a sequence of 'if's.
1682         Added a 'default' clause that gets executed if the type can not be
1683         matched, and that encodes it as '?' (unknown) and produces a
1684         warning.  For the GNU runtime, encode enumerated types exactly in
1685         the same way as integer types instead of using a hardcoded 'i'.
1686         Encode long double as 'D'.  Encode 128-bit integers as 'T' or 't'.
1687         Encode C++ reference types as pointers.  Call encode_vector to
1688         encode vectors.
1689         (encode_vector): New function.
1691 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1693         Merge from 'apple/trunk' branch on FSF servers.  I modified the
1694         changes to be used only when compiling for the NeXT runtime.
1696         2005-10-10  Fariborz Jahanian <fjahanian@apple.com>
1698         Radar 4301047
1700         * objc-act.c (encode_type): Remove the hack.
1702         2005-07-20  Ziemowit Laski  <zlaski@apple.com>
1704         Radar 4136935
1705         * objc-act.c (pointee_is_readonly): New function.
1706         (encode_pointer, encode_aggregate_within, encode_type):
1707         Attempt to emulate GCC 3.3 when generating type encodings.
1709 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1711         Merge from 'apple/trunk' branch on FSF servers.
1713         2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
1715         Radar 4229905
1716         * objc-act.c (objc_have_common_types): New function.
1718         2005-06-22  Ziemowit Laski  <zlaski@apple.com>
1720         Radar 4154928
1721         * objc-act.c (objc_common_type): New function.
1723 2010-09-27  Richard Guenther  <rguenther@suse.de>
1725         * objc-act.c (objc_get_class_reference): Use CP_TYPE_CONTEXT.
1726         (objc_is_global_reference_p): Use DECL_FILE_SCOPE_P.
1728 2010-09-26  Nicola Pero  <nicola.pero@meta-innovation.com>
1730         * objc-act.c: Removed historical, obsolete comment at the top of
1731         the file.
1733 2010-09-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1735         PR objc/23710
1736         * objc-act.c (objc_start_method_definition): Do not abort upon a
1737         'method definition not in @implementation context' error.  Return
1738         'false' instead.
1740 2010-09-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1742         PR objc/25965
1743         * objc-act.c (objc_get_interface_ivars): New function.
1744         (objc_collecting_ivars): New variable.
1745         (continue_class): Set and reset objc_collecting_ivars for context.
1747 2010-09-15  Nicola Pero  <nicola.pero@meta-innovation.com>
1749         Merge from 'apple/trunk' branch on FSF servers.
1751         2006-03-09 Fariborz Jahanian <fjahanian@apple.com>
1753         Radar 4457381
1754         * objc/objc-act.c (objc_finish_message_expr): Look for message in
1755         @class's protocol list.
1757         2006-02-07  Fariborz Jahanian <fjahanian@apple.com>
1759         Radar 4219590
1760         * objc/objc-act.c (objc_start_method_definition): Initialize
1761         break/continue labels.
1763         2005-08-22  Ziemowit Laski  <zlaski@apple.com>
1765         Radar 4174166
1766         * objc-act.c (objc_compare_types): Compare function
1767         pointers; indicate success if the right-hand side has
1768         a return type that is covariant, and the argument types
1769         contravariant, with those of the left side.
1771         2005-08-22  Ziemowit Laski  <zlaski@apple.com>
1773         Radar 4216500
1774         * objc-act.c (objc_get_protocol_qualified_type): When looking
1775         at a typedef, retrieve the precise type it describes (rather
1776         than merely looking up a class by name).
1778 2010-09-10  Nicola Pero  <nicola.pero@meta-innovation.com>
1780         * objc/objc-act.c (objc_begin_try_stmt): Generate an error if
1781         -fobjc-exceptions was not used.  (objc_build_throw_stmt): Same
1782         change.
1784 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
1786         * objc-act.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
1788 2010-07-10  Iain Sandoe  <iains@gcc.gnu.org>
1790         PR objc/44140
1791         * objc-act.c: build_objc_string_decl() remove declaration.
1792         (finish_var_decl): Remove forcing of var output and marking
1793         as "Used".
1794         (init_def_list): Use integer_zero_node.
1795         (init_objc_symtab): Use integer_zero_node, make the short
1796         integer type specific on relevant nodes.
1797         (generate_objc_symtab_decl): Remove call to
1798         forward_declare_categories().  Use null_pointer_node where
1799         appropriate.
1800         (build_module_descriptor): Comment and mark this item as
1801         DECL_PRESERVE_P.
1802         (generate_static_references): Use gcc_unreachable instead of
1803         abort ().
1804         (diagnose_missing_method): New.
1805         (build_next_selector_translation_table): New.
1806         (build_gnu_selector_translation_table): New.
1807         (add_objc_string): Merge code from build_objc_string_decl...
1808         ... and delete build_objc_string_decl().
1809         (generate_dispatch_table): Make integer types explicit.
1810         (generate_category): Pass implent and arrange for the data
1811         to be extracted within the routine.  Do not start new vars,
1812         but finish the ones collcted during parsing.
1813         (generate_shared_structures): Likewise.
1814         (finish_objc):  Reorder code so that we finish variables before
1815         referencing them.  Save the global data before calling meta-data
1816         creation routines, and pass the current reference to the two
1817         main routines.  Only call generate_objc_image_info () for the
1818         NeXT runtime.
1819         (generate_classref_translation_entry): Comment on and make this
1820         item DECL_PRESERVE_P.
1821         (handle_class_ref): Use varpool interfaces, comment on and make
1822         this item DECL_PRESERVE_P.
1823         (handle_impent): Likewise.
1824         (generate_objc_image_info): Only generate when the content is
1825         non-zero.  Make integer types explict.
1827 2010-07-03  Nathan Froyd  <froydnj@codesourcery.com>
1829         PR objc/24867
1830         * objc-act.c (build_sized_array_type): New function.
1831         (add_objc_string): Use it.
1832         (generate_protocol_list): Likewise.
1833         (generate_objc_image_info): Likewise.
1834         (add_field_decl): New function.
1835         (objc_build_struct): Use a VEC rather than building a TREE_LIST.
1836         (generate_struct_by_value_array): Use add_field_decl.
1837         (build_objc_symtab_template): Likewise.
1838         (build_module_descriptor): Likewise.
1839         (build_objc_exception_stuff): Likewise.
1840         (build_protocol_template): Likewise.
1841         (build_method_prototype_list_template): Likewise.
1842         (build_method_prototype_template): Likewise.
1843         (build_category_template): Likewise.
1844         (build_selector_template): Likewise.
1845         (build_class_template): Likewise.
1846         (build_super_template): Likewise.
1847         (build_ivar_template): Likewise.
1848         (build_ivar_list_template): Likewise.
1849         (build_method_list_template): Likewise.
1850         (build_method_template): Likewise.
1852 2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
1854         * objc-act.c: Do not include except.h.
1856 2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1858         * objc-act.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Use typed GC
1859         allocation.
1861         * objc-act.c (objc_volatilize_decl): Likewise.
1862         (objc_build_string_object): Likewise.
1863         (hash_init): Likewise.
1864         (hash_enter): Likewise.
1865         (hash_add_attr): Likewise.
1866         (add_class): Likewise.
1867         (start_class): Likewise.
1869 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
1871         * objc-act.c: Update include path for moved files.
1872         * objc-lang.c: Likewise.
1873         * config-lang.in: Update paths in gtfiles for files in c-family/.
1875 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
1877         * objc-act.c (build_next_objc_exception_stuff): Give setjmp a
1878         varargs type instead of a zero-argument type.
1880 2010-05-30  Nathan Froyd  <froydnj@codesourcery.com>
1882         * objc-act.c (synth_module_prologue): Use build_function_type_list
1883         instead of build_function_type.
1884         (build_module_initializer_routine): Likewise.
1885         (build_next_objc_exception_stuff): Likewise.
1886         (build_objc_exception_stuff): Likewise.
1888 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
1890         * objc-act.c: Include diagnostic-core.h instead of diagnostic.h.
1891         * Make-lang.in (objc/objc-act.o): Update dependencies.
1893 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
1895         * objc-act.h: Do not include gimple.h.
1896         * objc-act.c: Do not include rtl.h, expr.h, libfuncs.h, and tm_p.h.
1897         Include gimple.h.  Explain why except.h has to be included.
1898         * objc-lang.c: Do not include diagnostics.h.
1899         * Make-lang.in: Update dependencies.
1901 2010-05-25  Nathan Froyd  <froydnj@codesourcery.com>
1903         * objc-act.c (objc_build_constructor): Adjust OBJCPLUS impedance
1904         mismatch code for VECs.
1906 2010-05-25  Nathan Froyd  <froydnj@codesourcery.com>
1908         * objc-act.c (objc_build_constructor): Take a VEC instead of a tree.
1909         Use build_constructor instead of build_constructor_from_list.
1910         (objc_build_string_object): Build a VEC argument for
1911         objc_build_constructor.
1912         (init_def_list): Likewise.
1913         (init_objc_symtab): Likewise.
1914         (init_module_descriptor): Likewise.
1915         (generate_static_references): Likewise.
1916         (build_selector_translation_table): Likewise.
1917         (build_descriptor_table_initializer): Likewise.
1918         (generate_descriptor_table): Likewise.
1919         (build_protocol_initializer): Likewise.
1920         (build_ivar_list_initializer): Likewise.
1921         (generate_ivars_list): Likewise.
1922         (build_dispatch_table_initializer): Likewise.
1923         (generate_dispatch_table): Likewise.
1924         (generate_protocol_list): Likewise.
1925         (build_category_initializer): Likewise.
1926         (build_shared_structure_initializer): Likewise.
1927         (generate_objc_image_info): Likewise.
1929 2010-04-30  Iain Sandoe  <iains@gcc.gnu.org>
1931         PR objc++/32052
1932         * objc-act.c (encode_aggregate_within): Encode structure tags
1933         with template args for ObjC++.
1935 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
1937         * objc-act.c: Do not include varray.h.
1939 2010-04-07  Jakub Jelinek  <jakub@redhat.com>
1941         PR c/18624
1942         * objc-act.c (finish_var_decl, objc_begin_catch_clause,
1943         really_start_method, get_super_receiver, handle_class_ref): Set
1944         DECL_READ_P in addition to TREE_USED.
1946 2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
1948         PR objc/35996
1949         * objc-act.c (objc_init): Warn that -fobjc-gc is ignored for
1950         -fgnu-runtime and set flag_objc_gc to zero.
1952 2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
1954         PR objc++/23716
1955         * objc-act.c (build_module_initializer_routine): Make the argument
1956         to objc_start_function NULL_TREE when compiling ObjC++.
1958 2010-02-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1959             Mike Stump  <mikestump@comcast.net>
1961         PR objc/43061
1962         * objc-act.c (finish_var_decl): Set the generated symbols as "used".
1964 2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
1966         * objc-act.c (objc_substitute_decl, build_ivar_reference,
1967         get_super_receiver): Update build_indirect_ref calls.
1969 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
1971         * objc-act.c (generate_shared_structures): Remove unused sc_spec and
1972         decl_specs variables.
1973         (objc_build_message_expr): Remove unused loc variable.
1974         (objc_finish_message_expr): Remove unused saved_rtype variable.
1975         (encode_field_decl): Remove unused type variable.
1977         PR obj-c++/42156
1978         * objc-act.c (objc_build_struct): INIT_TYPE_OBJC_INFO for
1979         type variants that don't have it initialized yet.
1981 2009-09-14  Jan Hubicka  <jh@suse.cz>
1983         * objc-act.c (objc_add_static_instance): Do not set DECL_COMMON.
1985 2009-09-14  Richard Henderson  <rth@redhat.com>
1987         * objc-act.c (objc_init_exceptions): Don't call
1988         default_init_unwind_resume_libfunc.
1989         (objc_build_exc_ptr): Use __builtin_eh_pointer.
1991 2009-09-13  Richard Guenther  <rguenther@suse.de>
1992         Rafael Avila de Espindola  <espindola@google.com>
1994         * objc-act.c (objc_eh_runtime_type): Export.
1995         (objc_init_exceptions): Remove.  Move warning code ...
1996         (objc_begin_try_stmt): ... here
1997         (objc_build_throw_stmt): ... and here.
1998         (objc_eh_personality_decl): New.
1999         (objc_eh_personality): New function.
2000         * objc-act.h (objc_eh_runtime_type): Declare.
2001         (objc_eh_personality): Likewise.
2002         * objc-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
2003         (LANG_HOOKS_EH_PERSONALITY): Likewise.
2005 2009-09-03  Diego Novillo  <dnovillo@google.com>
2007         * objc-lang.c (lang_hooks): Remove const qualifier.
2009 2009-08-20  Richard Guenther  <rguenther@suse.de>
2011         * objc-act.c: Include c-lang.h
2012         * Make-lang.in (objc/objc-act.o): Add c-lang.h dependency.
2014 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
2015             Manuel López-Ibáñez  <manu@gcc.gnu.org>
2017         PR 40435
2018         * objc-act.c: Add location argument to all calls to
2019         build_fold_addr_expr.
2021 2009-07-14  Taras Glek  <tglek@mozilla.com>
2022             Rafael Espindola  <espindola@google.com>
2024         * Make-lang.in (objc.install-plugin): New target for
2025         installing plugin headers.
2027 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2029         * objc-act.c (next_sjlj_build_catch_list): Replace EXPR_LOCUS by
2030         EXPR_LOCATION.
2032 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2034         * objc-act.c: Replace %J by an explicit location. Update all
2035         calls.
2037 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2039         * objc-act.c: Replace %H by an explicit location. Update all
2040         calls.
2042 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
2044         PR objc/28050
2045         * objc-act.c (objc_build_message_args): Return if ARGS is the
2046         error_mark_node.
2048 2009-06-19  Ian Lance Taylor  <iant@google.com>
2050         * objc-act.c (objc_in_struct, objc_struct_types): Remove.
2051         (objc_struct_info): New static variable.
2052         (objc_start_struct): Pass &objc_struct_info, not &objc_in_struct
2053         and &objc_struct_types, to start_struct.
2054         (objc_finish_struct): Likewise for finish_struct.
2056 2009-06-15  Ian Lance Taylor  <iant@google.com>
2058         * objc-act.c (objc_start_function): Don't set
2059         label_context_stack_se or label_context_stack_vm.
2061 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
2063         * objc-act.c (finish_var_decl): Pass location to finish_decl.
2064         (objc_get_parm_info): Same.
2065         (get_super_receiver): Same.
2066         * objc-act.c (objc_build_component_ref): Pass location to
2067         build_compound_ref.
2068         (build_module_initializer_routine): Pass location to
2069         c_end_compound_stmt.
2070         (objc_generate_static_init_call): Pass location to build_stmt.
2071         (build_typed_selector_reference): New location argument.
2072         (build_selector_reference): Same.
2073         (objc_substitute_decl): Pass location to build_array_ref.
2074         (next_sjlj_build_try_catch_finally): Pass location to build_stmt.
2075         (objc_begin_catch_clause): Same.
2076         (objc_finish_try_stmt): Same.
2077         (objc_finish_catch_clause): Pass location to c_end_compound_stmt.
2078         (objc_build_throw_stmt): New argument.
2079         (generate_shared_structures): Pass location to build_c_cast.
2080         (objc_build_message_expr): Use local location.
2081         (objc_finish_message_expr): Use input_location.
2082         (build_objc_method_call): New argument.
2083         (objc_build_selector_expr): Same.
2084         (get_super_receiver): Pass location to build_c_cast,
2085         build_modify_expr, build_compound_expr.
2086         * objc-act.c: Add location to all calls to start_struct, build_decl,
2087         finish_struct.
2089 2009-06-09  Ian Lance Taylor  <iant@google.com>
2091         * objc-act.c (objc_gimplify_expr): Change return type to int.
2092         * objc-act.h: Update declaration.
2094 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
2096         * objc-act.c (objc_init): Skip print_struct_values during
2097         -fcompare-debug-second.
2099 2009-06-03  Ian Lance Taylor  <iant@google.com>
2101         * Make-lang.in (cc1obj-checksum.o): Depend upon $(CONFIG_H) and
2102         $(SYSTEM_H).
2104 2009-05-27  Ian Lance Taylor  <iant@google.com>
2106         * Make-lang.in (cc1obj-dummy$(exeext)): Change $(COMPILER) to
2107         $(LINKER).
2108         (cc1obj$(exeext)): Likewise.
2110 2009-05-26  Ian Lance Taylor  <iant@google.com>
2112         * Make-lang.in (cc1obj-dummy$(exeext)): Use $(COMPILER).
2113         (cc1obj$(exeext)): Likewise.
2115 2009-05-20  Ian Lance Taylor  <iant@google.com>
2117         * objc-act.c (objc_generate_cxx_ctor_or_dtor): Pass NULL rather
2118         than NULL_TREE to build_special_member_call.
2120 2009-05-10  Ian Lance Taylor  <iant@google.com>
2122         * objc-act.c (objc_building_struct): New static variable.
2123         (objc_in_struct, objc_struct_types): New static variables.
2124         (objc_start_struct, objc_finish_struct): New static functions.
2125         (generate_struct_by_value_array): Call objc_start_struct instead
2126         of start_struct, and call objc_finish_struct instead of
2127         finish_struct.
2128         (objc_build_struct, build_objc_symtab_template): Likewise.
2129         (build_module_descriptor): Likewise.
2130         (build_next_objc_exception_stuff): Likewise.
2131         (build_protocol_template): Likewise.
2132         (build_method_prototype_list_template): Likewise.
2133         (build_method_prototype_template): Likewise.
2134         (build_category_template, build_selector_template): Likewise.
2135         (build_class_template, build_super_template): Likewise.
2136         (build_ivar_template, build_ivar_list_template): Likewise.
2137         (build_method_list_template): Likewise.
2138         (build_method_template): Likewise.
2140 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2142         * objc-act.c: Include intl.h.
2143         (objc_lookup_protocol): Use complete sentences for diagnostics
2144         with %qE for identifiers and translating results of
2145         gen_type_name_0 to locale character set.
2146         (objc_check_decl, check_protocol_recursively,
2147         lookup_and_install_protocols, objc_build_string_object,
2148         objc_get_class_reference, objc_declare_alias, objc_declare_class,
2149         objc_get_class_ivars, error_with_ivar, check_duplicates,
2150         objc_finish_message_expr, objc_build_protocol_expr,
2151         objc_build_selector_expr, build_ivar_reference, objc_add_method,
2152         add_category, add_instance_variable, objc_is_public,
2153         check_methods, check_methods_accessible, check_protocol,
2154         start_class, finish_class, start_protocol, really_start_method,
2155         get_super_receiver, objc_lookup_ivar): Use %E and %qE for
2156         identifiers in diagnostics.  Translate generated text to locale
2157         character set as needed.
2158         (check_protocol, check_protocols): Change name parameter to type
2159         tree.
2160         (lang_report_error_function): Remove.
2162 2009-04-27  Ian Lance Taylor  <iant@google.com>
2164         * objc-act.c (objc_gimplify_expr): Add casts to enum type.
2166 2009-04-24  Ian Lance Taylor  <iant@google.com>
2168         * objc-act.c (get_super_receiver): Update calls to
2169         build_modify_expr to pass new argument.
2171 2009-04-21  Taras Glek <tglek@mozilla.com>
2173         * objc-act.c: Update GTY annotations to new syntax
2174         * objc-act.h: Likewise
2176 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
2178         * ChangeLog: Add copyright and license notices.
2180 2009-04-20  Ian Lance Taylor  <iant@google.com>
2182         * objc-act.c (objc_rewrite_function_call): Change parameter from
2183         params to first_param.  Change all callers.
2185 2009-03-30  Dominique d'Humieres  <dominiq@lps.ens.fr>
2187         PR bootstrap/39583
2188         * objc-act.c (in_late_binary_op): Define for Objective-C++.
2190 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
2192         PR c/456
2193         PR c/5675
2194         PR c/19976
2195         PR c/29116
2196         PR c/31871
2197         PR c/35198
2198         * objc-act.c (objc_finish_try_stmt): Set in_late_binary_op.
2200 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
2202         PR bootstrap/38262
2203         * Make-lang.in (cc1obj-dummy, cc1obj): Add BACKENDLIBS,
2204         remove GMPLIBS.
2206 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2208         * objc-act.c (objc_build_string_object): Pass location to
2209         build_unary_op.
2210         (init_def_list): Same.
2211         (init_objc_symtab): Same.
2212         (init_module_descriptor): Same.
2213         (build_module_initializer_routine): Same.
2214         (generate_static_references): Same.
2215         (build_typed_selector_reference): Same.
2216         (add_objc_string): Same.
2217         (objc_substitute_decl): Same.
2218         (objc_build_ivar_assignment): Same.
2219         (objc_build_global_assignment): Same.
2220         (objc_build_strong_cast_assignment): Same.
2221         (generate_protocols): Same.
2222         (build_protocol_initializer): Same.
2223         (build_dispatch_table_initializer): Same.
2224         (generate_protocol_list): Same.
2225         (build_category_initializer): Same.
2226         (build_shared_structure_initializer): Same.
2227         (generate_shared_structures): Same.
2228         (objc_build_protocol_expr): Same.
2229         (build_ivar_reference): Same.
2230         (get_super_receiver): Same.
2232 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2234         * objc-act.c (next_sjlj_build_enter_and_setjmp): Call
2235         c_common_truthvalue_conversion with location.
2236         (next_sjlj_build_catch_list): Same.
2237         (next_sjlj_build_try_catch_finally): Same.
2239 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2241         PR objc/37460
2242         * objc-lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
2243         * objc-act.h (objc_get_callee_fndecl): Remove prototype.
2244         * objc-act.c (objc_get_callee_fndecl): Kill.
2246 2008-09-17  Jan Hubicka  <jh@suse.cz>
2248         PR c++/18071
2249         * objc/objc-act.c (objc_finish_method_definition): Do not set
2250         DECL_INLINE.
2252 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
2254         * objc-act.c (build_typed_selector_reference): Pass input_location to
2255         build_unary_op calls.
2256         (build_selector_reference): Same, but to build_array_ref.
2257         (objc_substitute_decl): Same.
2258         (build_ivar_reference): Same, but to build_indirect_ref.
2259         (get_super_receiver): Same.
2261 2008-07-28  Richard Guenther  <rguenther@suse.de>
2263         Merge from gimple-tuples-branch.
2265         2008-07-18  Aldy Hernandez  <aldyh@redhat.com>
2267         * Make-lang.in (objc-lang.o): Depend on GIMPLE_H.
2268         (objc-act.o): Rename TREE_GIMPLE_H to GIMPLE_H.
2269         * objc-act.h: Include gimple.h instead of tree-gimple.h.
2270         * ipa-reference.c: Same.
2272         2007-11-10  Aldy Hernandez  <aldyh@redhat.com>
2274         * objc-act.c (objc_gimplify_expr): Change pre and post to sequences.
2275         * objc-act.h (objc_gimplify_expr): Change prototype accordingly.
2277 2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2279         * objc-act.c: Fix comment typos.
2281 2008-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2283         * objc-act.c (objc_start_class_interface,
2284         objc_start_category_interface, objc_start_class_implementation,
2285         objc_start_category_implementation, objc_build_struct,
2286         generate_static_references, build_private_template,
2287         lookup_category, objc_add_method, add_category,
2288         add_instance_variable, objc_is_public, conforms_to_protocol,
2289         start_class, continue_class, finish_class): Avoid C++ keywords.
2291 2008-07-14  Jason Merrill  <jason@redhat.com>
2293         PR objc++/36723
2294         * objc-act.c (objc_build_constructor): Update C++ tweak.
2296 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
2298         * objc-act.c (synth_module_prologue): Use TREE_NO_WARNING instead
2299         of DECL_IN_SYSTEM_HEADER.
2301 2008-07-11  Ian Lance Taylor  <iant@google.com>
2303         * objc-act.c (objc_is_reserved_word): Always check for RID_CLASS,
2304         etc., not just when OBJCPLUS is defined.
2306 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2308         * objc-act.c (setup_string_decl, objc_build_string_object,
2309         hash_interface, eq_interface, objc_begin_try_stmt,
2310         encode_method_prototype, build_ivar_list_initializer,
2311         objc_build_encode_expr): Fix for -Wc++-compat.
2313 2008-05-12  Tomas Bily  <tbily@suse.cz>
2315         * objc-act.c (objc_generate_write_barrier, objc_finish_message_expr):
2316         Use CONVERT_EXPR_P.
2318 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2320         * objc-act.c (objc_build_string_object): Don't set TREE_INVARIANT.
2322 2008-04-03  Tom Tromey  <tromey@redhat.com>
2324         * Make-lang.in (objc_OBJS): New variable.
2326 2008-03-27  Tom Tromey  <tromey@redhat.com>
2328         * Make-lang.in: Revert automatic dependency patch.
2330 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2332         PR obj-c++/35704
2333         * objc-act.c (objc_build_component_ref): Fix call to
2334         finish_class_member_access_expr.
2335         (objc_generate_cxx_ctor_or_dtor): Fix call to
2336         build_special_member_call.
2338 2008-03-25  Andrew Pinski  <pinskia@gmail.com>
2340         PR objc/29197
2341         * objc-act.c (encode_type): Handle when type is error_mark_node.
2342         (objc_push_parm): Handle when the type of parm is error_mark_node.
2344 2008-03-25  Tom Tromey  <tromey@redhat.com>
2346         * Make-lang.in (objc_OBJS): New variable.
2347         (cc1obj-checksum.o, objc/objc-lang.o, objc/objc-act.o): Remove.
2349 2008-03-21  Andreas Tobler  <a.tobler@schweiz.org>
2351         PR bootstrap/35660
2352         * objc-act.c (objc_generate_cxx_ctor_or_dtor): Rename IS_AGGR_TYPE to
2353         MAYBE_CLASS_TYPE_P.
2354         (objc_generate_cxx_cdtors): Likewise.
2355         (add_instance_variable): Likewise.
2357 2008-02-26  Tom Tromey  <tromey@redhat.com>
2359         * objc-act.c (objc_init): Remove old location code.
2361 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2363         PR other/35107
2364         * Make-lang.in (cc1obj-dummy, cc1obj): Add $(GMPLIBS).
2366 2007-07-30  Nick Clifton  <nickc@redhat.com>
2368         * Make-lang.in: Change copyright header to refer to version 3 of
2369         the GNU General Public License and to point readers at the
2370         COPYING3 file and the FSF's license web page.
2371         * lang-specs.h, objc-act.c, objc-tree.def, objc-act.h,
2372         config-lang.in, objc-lang.c: Likewise.
2374 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2376         * objc-act.c (objc_get_callee_fndecl): Constify.
2377         * objc-act.h (objc_get_callee_fndecl): Likewise.
2379 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2381         * objc-act.c (volatilized_hash, volatilized_eq, string_hash,
2382         string_eq): Constify.
2384 2007-04-04  Stuart Hastings  <stuart@apple.com>
2386         PR 31281
2387         * objc/objc-act.c (next_sjlj_build_catch_list): Delete volatile from rethrow decl.
2389 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2391         * Make-lang.in: Add dummy lang.install-pdf target.
2393 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2395         * objc/objc-act.c: Fix comment typos.
2397 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2398             Brooks Moses  <brooks.moses@codesourcery.com>
2399             Lee Millward  <lee.millward@codesourcery.com>
2401         * objc-act.c (receiver_is_class_object): Use new CALL_EXPR accessors.
2402         (objc_get_callee_fndecl): Likewise.
2404 2007-01-23  Andrew Pinski  <pinskia@gmail.com>
2406         PR objc/27438
2407         * objc-act.c (objc_add_static_instance): Mark the decl as
2408         TREE_USED.
2410 2007-01-20  Andrew Pinski  <pinskia@gmail.com>
2412         PR objc/30479
2413         * objc-act.c (hash_interface): Use IDENTIFIER_HASH_VALUE instead
2414         of htab_hash_pointer.
2415         (lookup_interface): Likewise.
2416         (add_class): Likewise.
2418 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
2420         * objc-act.c (objc_build_volatilized_type): Keep track of
2421         canonical types.
2422         (objc_get_protocol_qualified_type): Ditto.
2424 2006-11-02  Andreas Tobler  <a.tobler@schweiz.org>
2426         * objc-act.c (objc_finish_file): Remove ifdef clause for OBJCPLUS and
2427         content where we called cp_finish_file.
2429 2006-10-23 Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2431         * objc-act.c (synth_module_prologue): Replace calls to
2432         builtin_function with add_builtin_function.
2433         (build_next_objc_exception_stuff): Replace calls to
2434         builtin_function with add_builtin_function.
2435         (build_objc_exception_stuff): Replace calls to
2436         builtin_function with add_builtin_function.
2438 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
2440         * Make-lang.in: Added empty "objc.pdf" target.
2442 2006-09-26  Andrew Pinski  <pinskia@physics.uc.edu>
2444         PR objc/29195
2445         * objc-act.c (objc_push_parm): If we change the type of the
2446         decl, relayout the decl.
2448 2006-09-19  Eric Christopher  <echristo@apple.com>
2450         * objc-act.c (JBLEN): Rename to OBJC_JBLEN,
2451         default to something innocuous.
2452         (build_next_objc_exception_stuff): Rename JBLEN.
2454 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2456         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2458 2006-07-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2460         PR obj-c++/28434
2461         * objc-act.c (lookup_and_install_protocols): Skip error_mark_nodes.
2463 2006-06-06  Mike Stump  <mrs@apple.com>
2465         * objc-act.c: Remove prototype for objc_build_volatilized_type.
2467 2006-05-24  Mike Stump  <mrs@apple.com>
2469         * objc-act.c (build_next_objc_exception_stuff): Use JBLEN instead of _JBLEN.
2471 2006-05-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2473         PR objc/27240
2474         * objc-act.c (objc_is_public): Return early on invalid type.
2476 2006-03-02 Fariborz Jahanian <fjahanian@apple.com>
2478         * objc-act.c (init_module_descriptor): Remove file name from
2479         module descriptor.
2480         (gen_type_name_0): Fix ICE when issuing warning.
2482 2006-02-20 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
2483         * Make-lang.in (OBJC): Remove
2484         (OBJECTIVE-C): Remove
2485         (objective-c): Remove
2486         (.PHONY): Remove objective-c and ObjC
2488 2005-12-14  Andrew Pinski  <pinskia@physics.uc.edu>
2490         PR objc/25360
2491         * objc/objc-act.c (encode_type): Encode Complex types as 'j' followed
2492         by the inner type.
2494 2005-12-12  Andrew Pinski  <pinskia@physics.uc.edu>
2496         PR objc/25348
2497         * objc-act.c (encode_array): Handle arrays to zero sized types.
2499 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2501         * Make-lang.in (objc.all.build, objc.install-normal): Remove.
2503 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2505         * Make-lang.in: Remove all dependencies on s-gtype.
2507 2005-12-02  Richard Guenther  <rguenther@suse.de>
2509         * objc-act.c (objc_build_exc_ptr, next_sjlj_build_enter_and_setjmp
2510         next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
2511         next_sjlj_build_try_catch_finally, objc_begin_catch_clause,
2512         build_objc_method_call, objc_rewrite_function_call): Use buildN
2513         instead of build.
2515 2005-10-20  Geoffrey Keating  <geoffk@apple.com>
2517         * objc-act.c (synth_module_prologue): Clear TREE_NOTHROW
2518         on objc_msgSend and like builtin functions.
2520 2005-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2522         * objc-act.c (objc_build_component_ref): Adjust call to
2523         finish_class_member_access_expr due to a changed prototype.
2525 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
2527         PR objc/23306
2528         * objc-act.c (generate_strings): Remove and move code to
2529         finish decl to ...
2530         (add_objc_string): here when creating a new string decl.
2531         (finish_objc): Don't call generate_strings.
2533 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
2535         PR objc/23381
2536         * objc-act.c (next_sjlj_build_try_catch_finally): Set
2537         TREE_SIDE_EFFECTS on catch_seq after building it.
2539 2005-08-09  Andrew Pinski  <pinskia@physics.uc.edu>
2541         part of PR objc/21992
2542         * objc-act.c (handle_class_ref): The ref decl is always referenced.
2544 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
2546         Make CONSTRUCTOR use VEC to store initializers.
2547         * objc-act.c (objc_build_constructor): Use build_constructor_from_list
2548         instead of build_constructor.
2550 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
2552         * objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is
2553         removed.
2554         * objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common.
2555         (KEYWORD_KEY_NAME): Use decl_minimal.
2556         (METHOD_SEL_NAME): Ditto..
2557         (METHOD_SEL_ARGS): Use decl_non_common.
2558         (METHOD_ADD_ARGS): Ditto.
2559         (METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common.
2560         (METHOD_DEFINITION): Ditto.
2561         (METHOD_ENCODING): Ditto.
2562         * objc-lang.c: (objc_init_ts): New function.
2564 2005-07-07  Ziemowit Laski  <zlaski@apple.com>
2566         * objc-act.c (objc_build_struct): Pass in an actual @interface
2567         instead of its name, and annotate the struct created (and all
2568         existing variants thereof) with the @interface.
2569         (objc_compare_types): Treat forward-declared ObjC classes
2570         as stand-alone (root) classes for purposes of type comparisons.
2571         (build_private_template): Move some code to objc_build_struct().
2573 2005-07-07  Ziemowit Laski  <zlaski@apple.com>
2575         PR objc/22274
2576         * objc-act.c (objc_build_string_object): For GNU-style constants,
2577         use the @interface type rather than the built-in type.
2579 2005-07-03  Kazu Hirata  <kazu@codesourcery.com>
2581         * Make-lang.in (cc1plus-checksum.c): Use
2582         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
2584 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2586         * objc-act.c: Use %q to quote in diagnostics.
2588 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2590         * objc-act.c: Use '+' flag instead of %J.  Use 'q' flag for
2591         quoting.
2593 2005-06-30  Ziemowit Laski  <zlaski@apple.com>
2595         * objc-act.c (objc_build_volatilized_type): New function.
2596         (objc_volatilize_decl): Call objc_build_volatilized_type()
2597         instead of build_qualified_type().
2599 2005-06-29  Ziemowit Laski  <zlaski@apple.com>
2601         * objc-act.c (objc_build_internal_const_str_type): New function.
2602         (check_string_class_template): Use objc_get_class_ivars() instead
2603         of TYPE_FIELDS() to retrieve ivar list.
2604         (AT_LEAST_AS_LARGE_AS): Check the size of each field's type rather
2605         than the field itself.
2606         (objc_build_string_object): Synthesize a "__builtin_ObjCString"
2607         type and use it to lay out compile-time string objects.
2608         * objc-act.h (OCTI_INTERNAL_CNST_STR_TYPE, internal_const_str_type):
2609         New.
2611 2005-06-28  Paul Brook  <paul@codesourcery.com>
2613         * objc-act.c (objc_init_exceptions): Call
2614         default_init_unwind_resume_libfunc.
2616 2005-06-27  Ziemowit Laski  <zlaski@apple.com>
2618         * objc-act.c (objc_build_struct): Save the TYPE_OBJC_INFO
2619         portion of TYPE_LANG_SPECIFIC info for all variants of
2620         a class before calling finish_struct(), and restore
2621         same TYPE_OBJC_INFO afterwards.
2623 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
2625         * all files: Update FSF address in copyright headers.
2627 2005-06-15  Joseph S. Myers  <joseph@codesourcery.com>
2629         * objc-act.c (my_build_string_pointer): New.
2630         (objc_get_class_reference, get_super_receiver): Call
2631         my_build_string_pointer instead of my_build_string when building
2632         function arguments.
2634 2005-05-25  Mike Stump  <mrs@mrs.kithrup.com>
2636         * objc-act.c (volatilized_hash): Avoid warnings on 64-bit
2637         machines.
2639 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
2641         * objc-act.c (objc_build_struct): New function.
2642         (objc_derived_from_p): Likewise.
2643         (objc_build_component_ref): Likewise.
2644         (objc_copy_binfo): Likewise.
2645         (objc_xref_basetypes): Likewise.
2646         (objc_lookup_protocol): Likewise.
2647         (objc_compare_protocols): Likewise.
2648         (objc_volatilize_decl): Likewise.
2649         (encode_aggregate_fields): Likewise.
2650         (volatilized_hash): Likewise.
2651         (volatilized_eq): Likewise.
2652         (objc_compare_types): Likewise.
2653         (objc_type_quals_match): Likewise.
2654         (DERIVED_FROM_P): New ObjC macro, corresponding to C++ macro
2655         of same name.
2656         (get_class_ivars): Add second parameter indicating if entire
2657         hierarchy is desired.
2658         (struct volatilized_type): New type.
2659         (volatilized_htab): New hash table.
2660         (objc_types_compatible_p, objc_comptypes): Remove functions.
2661         (synth_module_prologue): Do not initialize 'unused_list'.
2662         (objc_get_class_reference): Fix ObjC++ impedance mismatches.
2663         (objc_declare_alias): Implement as a typedef.
2664         (objc_substitute_decl, objc_gimplify_expr): Reformat.
2665         (objc_get_class_ivars): Adjust call to get_class_ivars().
2666         (next_sjlj_build_enter_and_setjmp, synth_forward_declarations,
2667         build_ivar_reference, get_super_receiver): Call
2668         objc_build_component_ref() instead of build_component_ref().
2669         (objc_begin_catch_clause): Use DERIVED_FROM_P() instead of
2670         objc_comptypes().
2671         (build_private_template): Call objc_build_struct() instead of
2672         start_struct() and finish_struct().
2673         (hash_init): Initialize volatilized_htab.
2674         (objc_is_public): Adjust calls to objc_get_ivars(); adjust
2675         ObjC++ impedance mismatches.
2676         (encode_aggregate_within): Streamline by calling
2677         encode_aggregate_fields().
2678         * objc-act.h (objc_types_compatible_p): Remove prototype.
2679         (OCTI_UNUSED_LIST, unused_list): Remove slot.
2680         * objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove.
2682 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
2684         * Make-lang.in (cc1obj-dummy): New.
2685         (cc1obj-checksum.c): New.
2686         (cc1obj-checksum.o): New.
2687         (cc1obj): Add cc1obj-checksum.o.
2689 2005-05-18  Mike Stump  <mrs@apple.com>
2691         PR objc/21641
2692         * objc-act.c (struct interface_tuple): Mark it up for GC.
2693         (interface_htab): It is really a struct interface_tuple.
2695 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
2696             Mike Stump  <mrs@apple.com>
2698         Yet more Objective-C++...
2700         * objc-act.c (objc_finish_try_stmt): Add return value.
2701         (objc_build_synchronized): Likewise.
2703         * objc-act.c (objc_is_gcable_type): Add.
2704         (objc_substitute_decl): Add.
2705         (objc_build_ivar_assignment): Add.
2706         (objc_build_global_assignment): Add.
2707         (objc_build_strong_cast_assignment): Add.
2708         (objc_is_ivar_reference_p): Add.
2709         (objc_is_global_reference_p): Add.
2710         (objc_generate_write_barrier): Add.
2711         (objc_rewrite_function_call): Add.
2712         (objc_gimplify_expr): Add Objective-C++ support.
2713         * objc-act.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Likewise.
2714         (SIZEOF_OBJC_TYPE_LANG_SPECIFIC): Add.
2715         (INIT_TYPE_OBJC_INFO): Add Objective-C++ support.
2716         (DUP_TYPE_OBJC_INFO): Likewise.
2717         (struct imp_entry): Add field has_cxx_cdtors.
2718         (struct imp_entry *imp_list): Add OCTI_UMSG_FAST_DECL,
2719         OCTI_METH_LIST_TEMPL, OCTI_METH_PROTO_LIST_TEMPL,
2720         OCTI_IVAR_LIST_TEMPL, OCTI_ASSIGN_IVAR_DECL,
2721         OCTI_ASSIGN_IVAR_FAST_DECL, OCTI_ASSIGN_GLOBAL_DECL,
2722         OCTI_ASSIGN_STRONGCAST_DECL.
2723         (umsg_fast_decl): Add.
2724         (objc_assign_ivar_decl): Add.
2725         (objc_assign_ivar_fast_decl): Add.
2726         (objc_assign_global_decl): Add.
2727         (objc_assign_strong_cast_decl): Add.
2728         (objc_method_list_ptr): Add.
2729         (objc_method_proto_list_ptr): Add.
2730         (objc_ivar_list_ptr): Add.
2732         * objc-act.c (should_call_super_dealloc): Add.
2733         (OBJC_VERSION): Bump to 6.
2734         (objc_is_gcable_type): Add.
2735         (objc_substitute_decl): Add.
2736         (objc_build_ivar_assignment): Add.
2737         (objc_build_global_assignment): Add.
2738         (objc_build_strong_cast_assignment): Add.
2739         (objc_is_gcable_p): Add.
2740         (objc_is_ivar_reference_p): Add.
2741         (objc_is_global_reference_p): Add.
2742         (generate_shared_structures): Add flags parameter.
2743         (objc_generate_cxx_ctor_or_dtor): Add.
2744         (objc_generate_cxx_cdtors): Add.
2745         (add_class): Add name parameter.
2746         (objc_types_share_size_and_alignment): Add.
2747         (comp_proto_with_proto): Add strict parameter.
2748         (CLS_HAS_CXX_STRUCTORS): Add.
2749         (TAG_ASSIGNIVAR): Add.
2750         (TAG_ASSIGNGLOBAL): Add.
2751         (TAG_ASSIGNSTRONGCAST): Add.
2752         (TAG_MSGSEND_FAST): Add.
2753         (TAG_ASSIGNIVAR_FAST): Add.
2754         (TAG_CXX_CONSTRUCT): Add.
2755         (TAG_CXX_DESTRUCT): Add.
2756         (OBJC_LOOKUP_CLASS): Add.
2757         (OBJC_LOOKUP_NO_SUPER): Add.
2758         (objc_finish_file): Add pch support.
2759         (objc_finish_implementation): Add Objective-C++ support.
2760         (synth_module_prologue): Likewise.
2761         (synth_module_prologue): Add fast dispatching.
2762         (objc_get_class_reference): Add Objective-C++ support.
2763         (objc_generate_write_barrier): Likewise.
2764         (next_sjlj_build_enter_and_setjmp): Likewise.
2765         (objc_begin_try_stmt): Likewise.
2766         (build_next_objc_exception_stuff): Add fast ivar support.
2767         (build_private_template): Mark the record as used so debug
2768         information is generated.
2769         (build_protocol_template): Add Objective-C++ support.
2770         (objc_method_parm_type) Likewise.
2771         (objc_generate_cxx_ctor_or_dtor): Likewise.
2772         (objc_generate_cxx_cdtors): Likewise.
2773         (build_protocol_initializer): Likewise.
2774         (build_category_template): Likewise.
2775         (build_class_template): Likewise.
2776         (build_method_list_template): Likewise.
2777         (build_category_initializer): Likewise.
2778         (build_shared_structure_initializer): Likewise.
2779         (objc_finish_message_expr): Likewise.
2780         (build_objc_method_call): Add fast dispatch support.
2781         (lookup_method_static): Add support to end search at superclasses.
2782         (add_method_to_hash_list): Add strict parameter to
2783         comp_proto_with_proto.
2784         (objc_add_method): Likewise.
2785         (objc_add_method): Also set the interface_value.
2786         (add_instance_variable): Add Objective-C++ support.
2787         (objc_is_public): Likewise.
2788         (start_class): Likewise.
2789         (continue_class): Likewise.
2790         (encode_aggregate_within): Likewise.
2791         (start_method_def): Likewise.
2792         (objc_start_function): Clear current_function_returns_value
2793         and current_function_returns_null.
2794         (really_start_method): Add Objective-C++ support.
2795         (objc_finish_method_definition): Add warning for missing
2796         [super dealloc].
2797         (finish_objc): Add Objective-C++ support.
2798         (generate_objc_image_info): Likewise.
2799         (objc_lookup_ivar): Likewise.
2800         * objc-act.h (TYPE_HAS_OBJC_INFO): Likewise.
2801         (INIT_TYPE_OBJC_INFO): Likewise.
2802         (DUP_TYPE_OBJC_INFO): Likewise.
2804 2005-04-23  DJ Delorie  <dj@redhat.com>
2806         * objc-act.c: Adjust warning() callers.
2808 2005-04-21  Roger Sayle  <roger@eyesopen.com>
2810         * objc-act.h (METHOD_ADD_ARGS_ELLIPSIS_P): New macro for accessing
2811         this field of an objc method decl.
2812         * objc-act.c (build_method_decl): Take an additional "ellipsis"
2813         argument, and set METHOD_ADD_ARGS_ELLIPSIS_P as appropriate.
2814         (objc_build_method_signature): Accept additional "ellipsis"
2815         argument and pass it to build_method_decl.
2816         (get_arg_type_list, start_method_def, gen_method_decl): Use
2817         the new METHOD_ADD_ARGS_ELLIPSIS_P instead of examining the
2818         TREE_OVERFLOW field of a TREE_LIST node.
2820 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
2822         PR c/12913
2823         * objc-act.c (objc_start_function): Create stack level for context
2824         of identifiers with variably modified type.
2826 2005-03-30  Joseph S. Myers  <joseph@codesourcery.com>
2828         PR c/772
2829         PR c/17913
2830         * objc-act.c (objc_start_function): Push context on
2831         label_context_stack.
2833 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
2835         * objc-act.c (next_sjlj_build_enter_and_setjmp,
2836         next_sjlj_build_catch_list, next_sjlj_build_try_catch_finally):
2837         Call c_common_truthvalue_conversion.
2839 2005-02-25  Joseph S. Myers  <joseph@codesourcery.com>
2841         * Make-lang.in (objc/objc-parse.o-warn, objc/objc-parse.o,
2842         objc/objc-parse.c, objc/objc-parse.y): Remove
2843         (OBJC_OBJS, objc.srcextra, objc.tags, objc.mostlyclean,
2844         objc.distclean, objc.maintainer-clean): Update for new parser.
2845         * config-lang.in (gtfiles): Update for new parser.
2847 2005-01-29  Kazu Hirata  <kazu@cs.umass.edu>
2849         * lang-specs.h, objc-act.c, objc-act.h, objc-lang.c: Update
2850         copyright.
2852 2005-01-27  Matt Austern  <austern@apple.com>
2854         * objc-act.c (objc_finish_file): In ObjC++ mode, set at_eof before
2855         calling instantiate_pending_templates.
2857 2005-01-26  Alexander Malmberg  <alexander@malmberg.org>
2859         PR objc/18862
2860         * objc-act.c (build_selector_translation_table): Use
2861         input_location in the diagnostic for the GNU runtime or if
2862         TREE_PURPOSE (chain) is NULL.
2864 2005-01-25  Alexander Malmberg  <alexander@malmberg.org>
2866         PR objc/18408
2867         * objc-act.c (objc_types_compatible_p): New function.
2868         * objc-act.h (objc_types_compatible_p): Declare.
2869         * objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Define.
2871 2005-01-16  Ziemowit Laski  <zlaski@apple.com>
2873         * objc-act.c (objc_push_parm): Call c_type_promotes_to()
2874         via a lang-hook.
2876 2005-01-15  Ziemowit Laski  <zlaski@apple.com>
2878         PR objc/19321
2879         * objc-act.c (get_arg_type_list): Decay function arguments into
2880         pointers.
2881         (objc_push_parm): Likewise; bring PARM_DECL construction closer
2882         in line with what the C front-end does.
2883         (objc_get_parm_info): Call pushdecl() and finish_decl() on
2884         each PARM_DECL, like the C front-end does.
2885         (start_method_def): Remove redundant ARRAY_TYPE decay.
2886         (objc_start_function): Bring closer in line with what the
2887         C front-end does for functions.
2889 2005-01-14  Mike Stump  <mrs@apple.com>
2891         * lang-specs.h ("@objective-c"): Use cc1obj when -E is used so
2892         that -fobjc-exceptions is accepted.
2894 2004-12-30  Ziemowit Laski  <zlaski@apple.com>
2896         PR objc/18971
2897         * objc-act.c (get_arg_type_list, start_method_def): Decay
2898         array arguments into pointers.
2899         (gen_type_name_0): Learn to pretty-print array types.
2901 2004-12-15  Ziemowit Laski  <zlaski@apple.com>
2903         * objc-act.c (build_private_template): Change to return 'void'; do
2904         not set ivar_context, uprivate_record or objc_instance_type.
2905         (objc_comptypes, gen_type_name_0): For types 'id' and 'Class',
2906         retrieve protocol list from the pointee rather than the pointer itself;
2907         check TYPE_HAS_OBJC_INFO(...) precondition before accessing
2908         TYPE_OBJC_PROTOCOL_LIST.
2909         (objc_get_protocol_qualified_type): For types 'id' and 'Class',
2910         construct a variant of the pointee as well as the pointer, and
2911         store protocol information in the former.  When creating variants
2912         of RECORD_TYPEs, clone their TYPE_LANG_SPECIFIC fields and propagate
2913         TYPE_OBJC_INTERFACE information.
2914         (objc_declare_class): If a TYPE_DECL is looked up, retrieve the
2915         underlying RECORD_TYPE to check for presence of TYPE_OBJC_INTERFACE;
2916         for newly-created RECORD_TYPEs, create a tentative TYPE_OBJC_INTERFACE
2917         holding an IDENTIFIER_NODE.
2918         (objc_finish_message_expr): Check TYPE_HAS_OBJC_INFO(...) before
2919         accessing TYPE_OBJC_PROTOCOL_LIST; Use TYPE_OBJC_INTERFACE instead
2920         of calling lookup_interface(); allow for TYPE_OBJC_INTERFACE holding
2921         an IDENTIFIER_NODE (meaning a @class forward-declaration only).
2922         (objc_is_public): Check TYPE_OBJC_INTERFACE instead of calling
2923         lookup_interface().
2924         (continue_class): For @implementations, set ivar_context,
2925         uprivate_record and objc_instance_type, for @interfaces, call
2926         build_private_template().
2927         (encode_pointer): Check TYPE_HAS_OBJC_INFO(...) before accessing
2928         TYPE_OBJC_INTERFACE.
2929         (objc_types_are_equivalent): Check TYPE_HAS_OBJC_INFO(...) before
2930         accessing TYPE_OBJC_PROTOCOL_LIST.
2931         * objc-act.h (OBJC_INFO_SLOT_ELTS, TYPE_OBJC_INFO, INIT_TYPE_OBJC_INFO,
2932         DUP_TYPE_OBJC_INFO, ALLOC_OBJC_TYPE_LANG_SPECIFIC,
2933         SIZEOF_OBJC_TYPE_LANG_SPECIFIC): New macros.
2934         (TYPE_OBJC_INTERFACE): Replaces TREE_STATIC_INSTANCE and now points
2935         to an actual @interface; stored in TYPE_LANG_SPECIFIC(...).
2936         (TYPE_OBJC_PROTOCOL_LIST): Replaces TYPE_PROTOCOL_LIST; stored in
2937         TYPE_LANG_SPECIFIC(...).
2938         (TREE_STATIC_INSTANCE, TYPE_PROTOCOL_LIST): Delete.
2939         (IS_ID, IS_CLASS, IS_PROTOCOL_QUALIFIED_UNTYPED, IS_SUPER,
2940         TYPED_OBJECT): Check for POINTER_TYPE rather than POINTER_TYPE_P;
2941         adjust for use of TYPE_OBJC_INTERFACE and TYPE_OBJC_PROTOCOL_LIST
2942         instead of TREE_STATIC_INSTANCE and TYPE_PROTOCOL_LIST.
2944 2004-11-29  Joseph Myers  <joseph@codesourcery.com>
2946         PR c/7544
2947         * Make-lang.in (objc/objc-act.o): Update dependencies.
2948         * objc-act.c (objc_finish_file): Call
2949         maybe_apply_pending_pragma_weaks if not OBJCPLUS.
2951 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
2953         PR objc/18406
2954         * obj-act.c (encode_type): 96bits doubles are encoded the
2955         same way as 64bit and 128bit doubles are.
2957 2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>
2959         * objc-act.c: Use %q, %< and %> for quoting in diagnostics.
2961 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
2963         PR objc/16546
2964         * objc-act.c (generate_method_descriptors): Remove setting
2965         the new decls' type to variable_length_type.
2966         (generate_ivar_lists): Likewise.
2967         (generate_dispatch_tables): Likewise.
2969 2004-10-30  Ziemowit Laski  <zlaski@apple.com>
2971         * objc-act.c (objc_lookup_ivar): The new OTHER parameter
2972         contains the result of the ID lookup by the C or C++
2973         front-end; in class methods, use OTHER if it exists;
2974         in instance methods, use OTHER only if it is locally
2975         declared.
2977 2004-10-26  Ziemowit Laski  <zlaski@apple.com>
2979         * objc-act.c (finish_class): Do not synthesize bogus
2980         'extern objc_object *_Foo;' declarations for @interface Foo.
2982 2004-10-25  Ziemowit Laski  <zlaski@apple.com>
2983             David Ayers  <d.ayers@inode.at>
2985         * objc-act.c (objc_comptypes): Use IS_PROTOCOL_QUALIFIED_UNTYPED
2986         instead of IS_PROTOCOL_QUALIFIED_ID; add comparisons for:
2987         'Class <Protocol> != id <Protocol>'; 'Class <Protocol> != <class> *';
2988         'Class <Protocol> == id' and 'Class <Protocol> == Class'.
2989         (objc_is_id): Add test for 'super'.
2990         (objc_finish_message_expr): Allow for messaging of 'Class <Proto>'
2991         receivers; if class methods are not found in protocol lists, search
2992         for instance methods therein and warn if one is found.  Look in
2993         global hash tables for suitable method as a last resort when messaging
2994         'id <Proto>', 'Class <Proto>' and invalid receiver types.
2995         (objc_add_method): Insert instance methods listed in protocols into
2996         the global class method hash table.
2997         * objc-act.h (IS_PROTOCOL_QUALIFIED_ID): Rename to
2998         IS_PROTOCOL_QUALIFIED_UNTYPED and allow for 'Class <Proto>' in
2999         addition to 'id <Proto>'.
3001 2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>
3003         PR objc/17923
3004         * objc-act.c (objc_build_string_object): Create a CONST_DECL
3005         for the NeXT runtime case.
3007 2004-10-02  Kazu Hirata  <kazu@cs.umass.edu>
3009         * objc-act.c: Fix comment typos.
3011 2004-09-24  Ziemowit Laski  <zlaski@apple.com>
3013         * objc-act.c (init_objc_symtab, init_module_descriptor,
3014         build_shared_structure_initializer): When initializing 'long'
3015         fields, ensure that the initializer value is also 'long'.
3017 2004-09-24  Zack Weinberg  <zack@codesourcery.com>
3019         * objc-act.c: Change annotate_with_locus to SET_EXPR_LOCATION
3020         throughout.
3021         (objc_init): Only set input_line to 0 #ifndef USE_MAPPED_LOCATION.
3022         (build_selector_translation_table): Use %J in diagnostic
3023         instead of diddling input_line.  Fix spelling.
3025 2004-09-21  Ziemowit Laski  <zlaski@apple.com>
3027         * objc-act.c (objc_fold_objc_type_ref): New function.
3028         * objc-act.h (objc_fold_objc_type_ref): New prototype.
3030 2004-09-09  Joseph S. Myers  <jsm@polyomino.org.uk>
3032         * objc-act.c (objc_start_function, really_start_method,
3033         objc_get_parm_info, start_method_def): Update to new arg_info
3034         structures.
3036 2004-09-07  Ziemowit Laski  <zlaski@apple.com>
3038         * Make-lang.in (objc/objc-parse.o): Depend on $(C_COMMON_H) instead of
3039         objc/objc-act.h.
3040         (objc/objc-act.o): Depend on $(HASHTAB_H).
3041         * objc-act.c: Include hashtab.h; in ObjC++ mode, include cp-tree.h and
3042         objcp-decl.h instead of c-tree.h.
3043         (build_module_descriptor, get_class_ivars, synth_id_with_class_suffix,
3044         error_with_ivar, gen_method_decl, gen_declaration, setup_string_decl,
3045         build_protocol_template): Adjust prototypes.
3046         (build_module_initializer_routine, start_class, continue_class,
3047         finish_class, start_method_def, objc_start_function, start_protocol,
3048         build_method_decl, objc_add_method, add_instance_variable,
3049         build_ivar_reference, is_ivar, is_private, get_super_receiver,
3050         build_selector_table_decl, objc_push_parm, objc_get_parm_info,
3051         gen_type_name, gen_type_name_0, start_var_decl, finish_var_decl,
3052         create_field_decl): New prototypes.
3053         (objc_expand_function_end, comp_method_with_proto, objc_expr_last,
3054         gen_declaration_1, gen_declarator, is_complex_decl, adorn_decl,
3055         define_decl, create_builtin_decl, gen_declspecs): Remove prototypes.
3056         (TYPE_ID): Rename to OBJECT_TYPEDEF_NAME.
3057         (CLASS_TYPEDEF_NAME): New.
3058         (TAG_EXECCLASS): Change from a global variable to a #define.
3059         (TAG_RETURN_STRUCT): Delete.
3060         (TAG_GNUINIT): New, holds '__objc_gnu_init' name.
3061         (objc_inherit_code, objc_public_flag): New, moved from c-parse.in.
3062         (string_descriptor): New struct.
3063         (string_htab): New hash table.
3064         (string_hash, string_eq): New prototypes.
3065         (generate_struct_by_value_array): Call create_field_decl() instead of
3066         create_builtin_decl().
3067         (objc_init): Do not initialize objc_ellipsis_node or TAG_EXECCLASS;
3068         In ObjC++ mode, call cxx_init() instead of c_objc_common_init().
3069         (objc_finish_file): In ObjC++, call instantiate_pending_templates()
3070         and cp_finish_file().
3071         (define_decl, get_static_reference, get_protocol_reference,
3072         create_builtin_decl): Remove functions.
3073         (objc_start_class_interface, objc_start_category_interface,
3074         objc_start_protocol, objc_continue_interface, objc_finish_interface,
3075         objc_start_class_implementation, objc_start_category_implementation,
3076         objc_continue_implementation, objc_finish_implementation,
3077         objc_set_visibility, objc_set_method_type,
3078         objc_build_method_signature, objc_add_method_declaration,
3079         objc_start_method_definition, objc_add_instance_variable,
3080         objc_get_protocol_qualified_type, create_field_decl,
3081         start_var_decl, finish_var_decl): New functions.
3082         (setup_string_decl): Simplify since it is only called once.
3083         (synth_module_prologue): Call build_class_template(); predefine 'id'
3084         and 'Class' as typedefs; rename 'temp_type' to 'type'; disable debug
3085         hooks for duration of function; fix GNU runtime messenger signatures
3086         to correspond to reality; forward-declare '__objc_exec_class' for the
3087         GNU runtime; call build_selector_table_decl(); in ObjC++ mode, generate
3088         'extern "C" { ... }' wrappers around synthesized declarations; call
3089         build_protocol_template() and build_category_template().
3090         (string_hash, string_eq): New functions.
3091         (objc_build_string_object): Check metaclass correctness only once;
3092         store string literals in hash table.
3093         (objc_build_constructor): Do not convert initializer elements;
3094         adjust for ObjC++ impedance mismatch.
3095         (build_objc_symtab_template): Call create_field_decl() instead of
3096         create_builtin_decl().
3097         (init_objc_symtab): Add missing conversion to initializer element.
3098         (build_metadata_decl): Call start_var_decl() instead of define_decl().
3099         (generate_objc_symtab_decl): Do not call build_category_template();
3100         call start_var_decl() and finish_var_decl() instead of start_decl()
3101         and finish_decl().
3102         (build_module_descriptor): Call create_field_decl() instead of
3103         grokfield(); call start_var_decl() and finish_var_decl() instead of
3104         start_decl() and finish_decl(); always mark module descriptor as
3105         used; move GNU runtime-specific functionality to
3106         build_module_initializer_routine().
3107         (build_module_initializer_routine): New function, broken off of
3108         build_module_descriptor().
3109         (objc_static_init_needed_p, objc_generate_static_init_call): New
3110         functions.
3111         (generate_static_references, generate_strings,
3112         build_selector_translation_table, generate_descriptor_table,
3113         generate_ivars_list, generate_dispatch_table, generate_category): Call
3114         start_var_decl() and finish_var_decl() instead of start_decl() and
3115         finish_decl(); build a type directly instead of via groktypename().
3116         (build_selector_reference_decl, build_selector_table_decl,
3117         build_class_reference_decl, build_protocol_reference,
3118         generate_objc_image_info): Call start_var_decl() instead of
3119         build_decl().
3120         (build_selector_reference): For GNU runtime, do not call
3121         build_selector_reference_decl().
3122         (build_selector, build_typed_selector_reference): Always convert
3123         result to the selector type.
3124         (add_objc_string): Cast return value to 'char *'.
3125         (build_method_prototype_template, build_selector_template,
3126         build_method_template): Use actual selector type for fields
3127         pointing to selectors.
3128         (finish_objc): For GNU runtime, call
3129         build_module_initializer_routine() after build_module_descriptor().
3130         (generate_protocol_list, generate_shared_structures): Call
3131         start_var_decl() and finish_var_decl() instead of start_decl() and
3132         finish_decl(); build a type directly instead of via
3133         groktypename().
3134         (synth_id_with_class_suffix): Return a string.
3135         (get_arg_type_list): For instance methods, use the instance type for
3136         'self'; do not call groktypename_in_parm_context().
3137         (build_objc_string_decl): Squash redeclaration errors in ObjC++.
3138         (objc_is_class_name): Use OBJC_TYPE_NAME instead of TYPE_NAME;
3139         handle RECORD_TYPEs in ObjC as well as ObjC++.
3140         (objc_is_id): New function.
3141         (objc_is_object_ptr): Return the canonical type node.
3142         (objc_get_class_ivars): Simplify using get_class_ivars().
3143         (get_class_ivars): Remove second parameter; create a fresh copy
3144         of the ivar list for each call; do not check for existence of
3145         super class.
3146         (objc_eh_runtime_type): Mark #ifndef OBJCPLUS.
3147         (objc_init_exceptions): When using SJLJ-style exceptions, require
3148         the use of '-fobjc-exceptions' flag; do not require it for DWARF-style
3149         exceptions.
3150         (objc_build_exc_ptr, next_sjlj_build_try_catch_finally): Use
3151         objc_object_type instead of objc_id_type.
3152         (objc_begin_catch_clause): Convert the incoming PARM_DECL into
3153         a VAR_DECL before placing it in the appropriate scope; do not
3154         call define_decl(); adjust call to c_begin_compound_stmt();
3155         use objc_object_type instead of objc_id_type.
3156         (build_next_objc_exception_stuff): Call create_field_decl() instead
3157         of create_builtin_decl(); construct type directly instead of calling
3158         groktypename(); use OBJC_VOID_AT_END to mark end of function parameters.
3159         (build_private_template): Adjust call to get_class_ivars(); build
3160         a type directly instead of via groktypename().
3161         (build_protocol_template, build_method_prototype_list_template,
3162         build_method_prototype_template, build_category_template,
3163         build_selector_template, build_class_template, build_super_template,
3164         build_ivar_template, build_ivar_list_template,
3165         build_method_list_template, build_method_template):
3166         Call create_field_decl() instead of grokfield().
3167         (objc_method_parm_type): Do not call groktypename().
3168         (generate_descriptor_table): Call start_var_decl() and
3169         finish_var_decl() instead of start_decl() and finish_decl().
3170         (generate_method_descriptors, build_protocol_initializer,
3171         generate_dispatch_tables, build_category_initializer,
3172         build_shared_structure_initializer): Do not call groktypename().
3173         (generate_protocols): Call start_var_decl() and finish_var_decl()
3174         instead of start_decl() and finish_decl(); do not call groktypename().
3175         (error_with_ivar): Remove last parameter.
3176         (check_ivars): Do not iterate ovar CLASS_RAW_IVARS lists in addition
3177         to CLASS_IVARS lists; adjust calls to error_with_ivar().
3178         (generate_ivar_lists): Convert one of the initializer elements; do
3179         not call groktypename().
3180         (get_arg_type_list, start_method_def, gen_method_def): Account for
3181         new representation of variable arguments and '...' in Objective-C
3182         methods; add Objective-C++ impedance matching code.
3183         (is_objc_type_qualifier): Remove function.
3184         (adjust_type_for_id_default): Simplify; there is no longer a need to
3185         wade through declspecs.
3186         (lookup_interface, start_class, continue_class,
3187         finish_class, start_method_def, start_protocol, build_method_decl,
3188         objc_add_method, add_instance_variable, build_ivar_reference,
3189         is_ivar, is_private, get_super_receiver, objc_build_finally_epilogue):
3190         Make into static functions.
3191         (receiver_is_class_object): Use new IS_CLASS() macro.
3192         (objc_build_message_expr): Tweak ObjC++ message argument handling;
3193         call objc_finish_message_expr() instead of finish_message_expr().
3194         (finish_message_expr): Rename to objc_finish_message_expr(); use
3195         OBJC_TYPE_NAME and OBJC_SET_TYPE_NAME macros instead of TYPE_NAME.
3196         call gen_type_name() instead of gen_declaration(); call objc_is_id()
3197         instead of using IS_ID and IS_CLASS; Use objc_class_name instead of
3198         calling get_identifier("Class"); handle CONVERT_EXPRs in receiver.
3199         (build_objc_method_call, warn_with_method): Do not call groktypename().
3200         (build_ivar_reference): Call convert() instead of clobbering in a
3201         type.
3202         (hash_init): Initialize string_htab hash table.
3203         (add_instance_variable): Simplify parameter list; do not call grokfield();
3204         do not populate CLASS_IVARS list.
3205         (start_class): Check for the existence of super class, if one was specified.
3206         (continue_class): Use CLASS_RAW_IVARS rather than CLASS_IVARS; do not
3207         call build_class_template(); adjust call to get_class_ivars(); call
3208         build_decl(), pushdecl() and finish_decl() instead of define_decl().
3209         (finish_class): Call build_decl(), pushdecl() and finish_decl() instead
3210         of define_decl().
3211         (add_protocols): Use PROTOCOL_BINFO_ELTS for the tree vector size.
3212         (start_protocol): Do not call build_protocol_template(); use
3213         PROTOCOL_BINFO_ELTS for the tree vector size.
3214         (encode_type_qualifiers): Do not handle the 'const' qualifier here.
3215         (encode_pointer): Encode 'const char *' as 'r*', for backwards
3216         compatibility.
3217         (encode_array): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld".
3218         (encode_type): Handle the 'const' qualifier here.
3219         (objc_parmlist): New global variable, sued by objc_push_parm and
3220         objc_get_parm_info().
3221         (objc_push_parm, objc_get_parm_info): New functions.
3222         (objc_expr_last): Remove function.
3223         (synth_self_and_ucmd_args): For instance methods, use the instance
3224         type for 'self'; call objc_push_parm() instead of push_parm_decl().
3225         (start_method_def): Do not call push_scope(), declare_parm_level(),
3226         pop_scope(), push_parm_decl(), store_parm_decls() or objc_expr_last();
3227         just use objc_push_parm() and objc_get_parm_info().
3228         (comp_method_with_proto): Remove function.
3229         (objc_types_are_equivalent): Strip away indirections before comparing
3230         underlying types.
3231         (comp_proto_with_proto): Do not call groktypename(); types are no
3232         longer in raw declspec format.
3233         (objc_start_function): New function.
3234         (really_start_method): Call comp_proto_with_proto() instead of
3235         comp_method_with_proto(); call objc_start_function() instead of
3236         hand-crafting a function declarator.
3237         (continue_method_def, objc_expand_function_end): Remove functions.
3238         (get_super_receiver): Call objc_get_current_scope() instead of
3239         get_current_scope(); reference 'super_class' field (instead of
3240         'class').
3241         (finish_method_def): Rename to objc_finish_method_definition() and
3242         add a function decl parameter; move method encoding call from
3243         objc_expand_function_end().
3244         (is_complex_decl, adorn_decl, gen_declarator, gen_declspecs,
3245         gen_declaration_1): Remove functions.
3246         (tmpbuf, RAW_DECLSPEC): Remove.
3247         (gen_declaration): Remove second parameter; simplify to deal
3248         with TYPE_P nodes instead of raw declspecs.
3249         (gen_type_name, gen_type_name_0): New functions.
3250         (gen_method_decl): Remove second parameter; call gen_type_name()
3251         instead of gen_declaration_1().
3252         (dump_interface): Adjust calls to gen_declaration() and
3253         gen_method_decl(); do not allocate a separate string buffer.
3254         (init_objc): Allocate a larger string buffer to accommodate
3255         dump_interface(); adjust call to build_module_descriptor();
3256         add call to build_module_initializer_routine() for the GNU
3257         runtime.
3258         (generate_classref_translation_entry): Do not call start_decl(); call
3259         finish_var_decl() instead of finish_decl(); call convert() instead of
3260         build_c_cast().
3261         * objc-act.h (CLASS_OWN_IVARS): Remove accessor.
3262         (CLASS_BINFO_ELTS): Reduce from 6 to 5, now that CLASS_OWN_IVARS is
3263         gone.
3264         (OCTI_GNU_INIT_DECL, GNU_INIT_decl): New.
3265         (OCTI_ELLIPSIS_NODE, objc_ellipsis_node): Remove.
3266         (OCTI_ID_ID, id_type, objc_id_id): Rename to OCTI_ID_NAME,
3267         objc_object_type and objc_object_name, respectively.
3268         (OCTI_CLS_REF, OCTI_CLASS_NAME, objc_class_reference,
3269         objc_class_name): New.
3270         (IS_CLASS): New macro.
3271         (IS_ID, IS_SUPER): Robustify.
3272         (OCTI_EXECCLASS_DECL, execclass_decl): New.
3273         (finish_file, start_class, continue_class, finish_class,
3274         start_method_def, continue_method_def, finish_method_def,
3275         start_protocol, finish_protocol, objc_build_throw_stmt,
3276         objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
3277         objc_build_synchronized_epilogue, objc_build_try_prologue,
3278         objc_build_try_epilogue, objc_build_catch_stmt, objc_build_catch_epilogue,
3279         objc_build_finally_prologue, objc_build_finally_epilogue,
3280         is_ivar, is_private, is_public, add_instance_variable, objc_add_method,
3281         get_super_receiver, objc_clear_super_receiver, get_class_ivars_from_name,
3282         get_class_reference, get_static_reference, get_object_reference,
3283         build_message_expr, finish_message_expr, build_selector_expr,
3284         build_ivar_reference, build_keyword_decl, build_method_decl,
3285         build_protocol_expr, build_objc_string_object, objc_declare_alias,
3286         objc_declare_class, objc_declare_protocols, objc_comptypes,
3287         objc_check_decl, build_encode_expr): Remove prototypes.
3288         (imp_count, cat_count): Make GGC-aware.
3289         (OBJC_SET_TYPE_NAME): New macro.
3291 2004-09-03  Ziemowit Laski  <zlaski@apple.com>
3293         * config-lang.in: Update copyright notice.
3294         (lang_requires): Indicate that ObjC requires C to be built first.
3296 2004-09-01  Ziemowit Laski  <zlaski@apple.com>
3298         * objc-act.c (objc_check_decl): Use OBJC_TYPE_NAME macro instead of
3299         TYPE_NAME.
3300         (build_objc_string_object): Rename to objc_build_string_object().
3301         (get_class_reference): Rename to objc_get_class_reference().
3302         (get_class_ivars_from_name): Rename to objc_get_class_ivars().
3303         (next_sjlj_build_catch_list, get_super_receiver): Call
3304         objc_get_class_reference() instead of get_class_reference().
3305         (build_keyword_decl): Rename to objc_build_keyword_decl().
3306         (build_message_expr): Rename to objc_build_message_expr().
3307         (build_protocol_expr): Rename to objc_build_protocol_expr().
3308         (build_selector_expr): Rename to objc_build_selector_expr().
3309         (build_encode_expr): Rename to objc_build_encode_expr().
3310         * objc-act.h (get_class_ivars_from_name): Rename prototype to
3311         objc_get_class_ivars().
3312         (get_class_reference): Rename prototype to objc_get_class_reference().
3313         (build_message_expr): Rename prototype to objc_build_message_expr().
3314         (build_selector_expr): Rename prototype to objc_build_selector_expr().
3315         (build_keyword_decl): Rename prototype to objc_build_keyword_decl().
3316         (build_protocol_expr): Rename prototype to objc_build_prototype_expr().
3317         (build_objc_string_object): Rename prototype to
3318         objc_build_string_object().
3320 2004-09-01  Ziemowit Laski  <zlaski@apple.com>
3322         * objc-act.c (lookup_interface): Make function 'static' and add a
3323         local prototype.
3324         (objc_check_decl, get_class_reference, objc_declare_alias,
3325         objc_declare_class, objc_is_object_ptr): Call objc_is_class_name()
3326         instead of is_class_name().
3327         (get_super_receiver, objc_clear_super_receiver): Call
3328         objc_get_current_scope() instead of get_current_scope().
3329         (is_class_name): Rename to objc_is_class_name.
3330         (lookup_objc_ivar): Rename to objc_lookup_ivar.
3332 2004-08-28  Ziemowit Laski  <zlaski@apple.com>
3334         * objc-act.c (objc_is_reserved_word): New function.
3336 2004-08-15  Ziemowit Laski  <zlaski@apple.com>
3338         * Make-lang.in (objc/objc-lang.o): Depend on $(C_PRETTY_PRINT_H),
3339         $(DIAGNOSTIC_H), c-objc-common.h and gtype-objc.h, but not on toplev.h.
3340         (objc/objc-parse.o): Do not depend on gtype-objc.h.
3341         * objc-act.c: Do not include gtype-objc.h.
3342         (finish_file): Rename to objc_finish_file().
3343         * objc-act.h (finish_file): Update copyright notice; remove prototype.
3344         * objc-lang.c: Update copyright notice; include diagnostic.h,
3345         c-objc-common.h, c-pretty-print.h and gtype-objc.h; do not include
3346         toplev.h.
3347         (finish_file): New hook routine.
3348         (LANG_HOOKS_FINISH, LANG_HOOKS_INIT_OPTIONS,
3349         LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
3350         LANG_HOOKS_MISSING_ARGUMENT, LANG_HOOKS_POST_OPTIONS,
3351         LANG_HOOKS_GET_ALIAS_SET, LANG_HOOKS_SAFE_FROM_P,
3352         LANG_HOOKS_EXPAND_EXPR, LANG_HOOKS_MARK_ADDRESSABLE,
3353         LANG_HOOKS_PARSE_FILE, LANG_HOOKS_TRUTHVALUE_CONVERSION,
3354         LANG_HOOKS_FINISH_INCOMPLETE_DECL, LANG_HOOKS_UNSAFE_FOR_REEVAL,
3355         LANG_HOOKS_STATICP, LANG_HOOKS_SET_DECL_ASSEMBLER_NAME,
3356         LANG_HOOKS_NO_BODY_BLOCKS, LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL,
3357         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_FUNCTION_ENTER_NESTED,
3358         LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_DUP_LANG_SPECIFIC_DECL,
3359         LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT,
3360         LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
3361         LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
3362         LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS,
3363         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
3364         LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING,
3365         LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS,
3366         LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
3367         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_TYPE_FOR_MODE,
3368         LANG_HOOKS_TYPE_FOR_SIZE, LANG_HOOKS_SIGNED_TYPE,
3369         LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE,
3370         LANG_HOOKS_INCOMPLETE_TYPE_ERROR, LANG_HOOKS_TYPE_PROMOTES_TO,
3371         LANG_HOOKS_REGISTER_BUILTIN_TYPE, LANG_HOOKS_WRITE_GLOBALS):
3372         Move to c-objc-common.h.
3375 Copyright (C) 2004-2013 Free Software Foundation, Inc.
3377 Copying and distribution of this file, with or without modification,
3378 are permitted in any medium without royalty provided the copyright
3379 notice and this notice are preserved.