remove unused files
[platform/upstream/gcc48.git] / gcc / objc / ChangeLog
1 2013-10-16  Release Manager
2
3         * GCC 4.8.2 released.
4
5 2013-05-31  Release Manager
6
7         * GCC 4.8.1 released.
8
9 2013-03-22  Release Manager
10
11         * GCC 4.8.0 released.
12
13 2012-11-20  Diego Novillo  <dnovillo@google.com>
14
15         * objc-act.c: Replace all vec<T, A>() initializers with vNULL.
16
17 2012-11-16  Diego Novillo  <dnovillo@google.com>
18
19         Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
20
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.
29
30 2012-10-01  Lawrence Crowl  <crowl@google.com>
31
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.
36
37 2012-06-29  Steven Bosscher  <steven@gcc.gnu.org>
38
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.
49
50 2012-06-19  Steven Bosscher  <steven@gcc.gnu.org>
51
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.
57
58 2012-05-31  Steven Bosscher  <steven@gcc.gnu.org>
59
60         * objc-act.c: Do not include output.h.
61
62 2012-05-17  Paolo Carlini  <paolo.carlini@oracle.com>
63
64         PR objc++/53388
65         * objc-act.c (objc_get_class_reference, objc_build_message_expr):
66         Use build_min_nt_loc.
67
68 2012-04-20  Jan Hubicka  <jh@suse.cz>
69
70         * objc-act.c (mark_referenced_methods); Use
71         cgraph_mark_force_output_node.
72
73 2012-03-21  Steven Bosscher  <steven@gcc.gnu.org>
74
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.
81
82 2012-03-05  Jason Merrill  <jason@redhat.com>
83
84         * objc-map.c (objc_map_private_resize, objc_map_alloc_ggc): Don't
85         call _stat functions without MEM_STAT_INFO.
86
87 2011-11-12  Iain Sandoe  <iains@gcc.gnu.org>
88
89         * objc-next-runtime-abi-01.c (objc_eh_personality): Use gcc personality
90         for Objective-C m32.
91
92 2011-10-29  Iain Sandoe  <iains@gcc.gnu.org>
93
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.
98
99 2011-10-18  Mikael Pettersson  <mikpe@it.uu.se>
100
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.
106
107 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
108
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.
157
158 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
159
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.
168
169 2011-07-19  Richard Guenther  <rguenther@suse.de>
170
171         * objc-next-runtime-abi-02.c (objc_v2_build_ivar_ref):
172         Use fold_build_pointer_plus.
173         (objc2_build_ehtype_initializer): Likewise.
174
175 2011-07-11  Nicola Pero  <nicola.pero@meta-innovation.com>
176
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>
203
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.
241
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>
247
248         * objc-act.c (receiver_is_class_object): Expanded comment.
249         (objc_finish_message_expr): Likewise.
250
251 2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>
252
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.
259
260 2011-06-01  Nicola Pero  <nicola.pero@meta-innovation.com>
261
262         * objc-act.c (objc_decl_method_attributes): Implement nonnull
263         attribute for Objective-C methods.
264
265 2011-05-21  Nicola Pero  <nicola.pero@meta-innovation.com>
266
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.
270
271 2011-05-20  Nathan Froyd  <froydnj@codesourcery.com>
272
273         * objc-act.c (objc_compare_types): Use function_args_iterator
274         instead of TYPE_ARG_TYPES to compare function argument types.
275
276 2011-05-13  Toon Moene  <toon@moene.org>
277
278         * objc-next-runtime-abi-02.c (newabi_append_ro):
279         Add const qualifier to constant variable pointer declaration.
280
281 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
282
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.
286
287 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
288
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
313
314 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
315
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.
329
330 2011-04-26  Jason Merrill  <jason@redhat.com>
331
332         * objc-act.c (objc_fold_objc_type_ref): Remove.
333         * objc-act.h: Remove prototype.
334
335 2011-04-21  Nathan Froyd  <froydnj@codesourcery.com>
336
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.
341
342 2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
343
344         * objc-act.c (ivar_of_class): New.
345         (objc_is_public): Use ivar_of_class.
346
347 2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
348
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.
353
354 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
355
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.
360
361 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
362
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.
367
368 2011-04-13  Nicola Pero  <nicola.pero@meta-innovation.com>
369
370         * objc-act.c (build_keyword_selector): Use get_identifier_with_length
371         instead of get_identifier.
372
373 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
374
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.
378
379 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
380
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.
384
385 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
386
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 ().
391
392 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
393
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.
398
399 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
400
401         * objc-act.c (objc_is_class_name, objc_is_id): For efficiency,
402         avoid calling identifier_global_value() multiple times.
403
404 2011-04-12  Martin Jambor  <mjambor@suse.cz>
405
406         * objc-act.c (mark_referenced_methods): Call cgraph_get_create_node
407         instead of cgraph_node.
408
409 2011-04-06  Joseph Myers  <joseph@codesourcery.com>
410
411         * objc-act.c: Include c-target.h instead of target.h.
412         * Make-lang.in (objc/objc-act.o): Update dependencies.
413
414 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
415
416         * lang-specs.h: Match -save-temps* instead of -save-temps.
417
418 2011-02-26  Nicola Pero  <nicola.pero@meta-innovation.com>
419
420         * objc-act.c (objc_v2_encode_prop_attr): Rewritten.
421
422 2011-02-23  Nicola Pero  <nicola.pero@meta-innovation.com>
423
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.
428
429 2011-02-22  Nicola Pero  <nicola.pero@meta-innovation.com>
430
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.
437
438 2011-02-21  Mike Stump  <mikestump@comcast.net>
439
440         * Make-lang.in (check_objc_parallelize): Refine for 4 processor
441         machines.
442
443 2011-02-20  Nicola Pero  <nicola.pero@meta-innovation.com>
444
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.
449
450 2011-01-20  Nicola Pero  <nicola.pero@meta-innovation.com>
451
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.
455
456 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
457
458         * objc-next-runtime-abi-01.c: Updated comments.
459         * objc-next-runtime-abi-02.c: Same.
460
461 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
462
463         * objc-act.c (objc_init, generate_struct_by_value_array): Updated
464         comments.
465
466 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
467
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.
474
475 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
476
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.
479
480 2011-02-17  Iain Sandoe  <iains@gcc.gnu.org>
481
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.
582
583 2011-01-17  Nicola Pero  <nicola.pero@meta-innovation.com>
584
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.
588
589 2011-01-14  Ben Elliston  <bje@au.ibm.com>
590
591         PR 19162
592         * objc-act.c (generate_struct_by_value_array): Do not output a
593         definition for struct_forward_array.
594
595 2011-01-08  Iain Sandoe  <iains@gcc.gnu.org>
596
597         * objc-act.c (objc_finish_foreach_loop): Mark collection expression
598         as read.
599
600 2011-01-02  H.J. Lu  <hongjiu.lu@intel.com>
601
602         * objc-act.c (check_that_protocol_is_defined): Fix a typo.
603
604 2011-01-02  Nicola Pero  <nicola.pero@meta-innovation.com>
605
606         * objc-act.c (check_that_protocol_is_defined): New.
607         (lookup_protocol): Call check_that_protocol_is_defined.
608
609 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
610
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.
615
616 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
617
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.
626
627 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
628
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.
634
635 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
636
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".
641
642 2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>
643
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.
649
650 2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>
651
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.
671
672 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
673
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.
689
690 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
691
692         * objc-act.c (objc_start_category_interface): Produce an error if
693         a class extension is found after the class @implementation.
694
695 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
696
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".
700
701 2010-12-26  Nicola Pero  <nicola.pero@meta-innovation.com>
702
703         * config-lang.in (gtfiles): Added c-family/c-cppbuiltin.c.
704
705 2010-12-22  Nathan Froyd  <froydnj@codesourcery.com>
706
707         * objc-act.c (next_sjlj_build_enter_and_setjmp): Use prototype_p.
708
709 2010-12-18  Nicola Pero  <nicola.pero@meta-innovation.com>
710
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.
717
718 2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
719
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.
725
726 2010-12-10  Nicola Pero  <nicola.pero@meta-innovation.com>
727
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.
739
740 2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>
741
742         * objc-act.c (objc_build_throw_stmt): Check that the argument of
743         @throw is an object and emit an error if not.
744
745 2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>
746
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.
750
751 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
752
753         * objc-act.c (objc_finish_foreach_loop): Mark the
754         object_expression as used.
755
756 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
757
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.
764
765 2010-12-02  Joseph Myers  <joseph@codesourcery.com>
766
767         * lang-specs.h: Don't handle -ftraditional.
768
769 2010-12-02  Nicola Pero  <nicola.pero@meta-innovation.com>
770
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.
773
774 2010-11-30  Nicola Pero  <nicola.pero@meta-innovation.com>
775
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.
784
785 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
786             Mike Stump  <mikestump@comcast.net>
787
788         Allow 'make check-objc -j2'
789         * Make-lang.in (lang_checks_parallelized): New.
790         (check_objc_parallelize): New.
791
792 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
793
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.
797
798 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
799
800         * objc-act.c (objc_maybe_build_component_ref): Removed TODO.
801
802 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
803
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.
809
810 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
811
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.
815
816 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
817
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.
832
833 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
834
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.
841
842 2010-11-25  Nicola Pero  <nicola.pero@meta-innovation.com>
843
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.
848
849 2010-11-23  Nicola Pero  <nicola.pero@meta-innovation.com>
850
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.
855
856 2010-11-22  Joseph Myers  <joseph@codesourcery.com>
857
858         * objc-act.c (write_symbols): Don't declare here.
859
860 2010-11-22  Nicola Pero  <nicola.pero@meta-innovation.com>
861
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.
865
866 2010-11-20  Jakub Jelinek  <jakub@redhat.com>
867
868         PR c/46547
869         * objc-act.c (in_late_binary_op): Remove.
870
871 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
872
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.
886
887 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
888
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.
905
906 2010-11-17  Nicola Pero  <nicola.pero@meta-innovation.com>
907
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.
911
912 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
913
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.
923
924 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
925
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.
929
930 2010-11-14  Nicola Pero  <nicola.pero@meta-innovation.com>
931
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'.
948
949 2010-11-13  Nicola Pero  <nicola.pero@meta-innovation.com>
950
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.
954
955 2010-11-11  Nicola Pero  <nicola.pero@meta-innovation.com>
956
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.
965
966 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
967
968         * objc-act.c (objc_init): Use %' in diagnostic.
969         (objc_set_method_opt): Remove trailing '.' from diagnostic.
970
971 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
972
973         * objc-act.c (dump_base_name): Don't declare here.
974
975 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
976
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.
986
987 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
988
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.
1004
1005 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
1006
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.
1022
1023 2010-11-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1024
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.
1047
1048 2010-11-06  Iain Sandoe  <iains@gcc.gnu.org>
1049
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.
1054
1055 2010-11-04  Nicola Pero  <nicola.pero@meta-innovation.com>
1056
1057         Fixed using the Objective-C 2.0 dot-syntax with class names.
1058         * objc-act.c (objc_build_class_component_ref): New.
1059
1060 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
1061
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.
1072
1073 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
1074
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.
1092
1093 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
1094
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.
1104
1105 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1106
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.
1120
1121 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1122
1123         * objc-act.c (objc_maybe_build_component_ref): Warn about using
1124         deprecated properties.
1125         (objc_maybe_printable_name): Support PROPERTY_DECL.
1126
1127 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1128
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.
1146
1147 2010-10-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1148
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.
1237
1238 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1239
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.
1254
1255 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1256
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.
1262
1263 2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>
1264
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.
1277
1278 2010-10-23  Nicola Pero  <nicola.pero@meta-innovation.com>
1279
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++.
1289
1290 2010-10-21  Iain Sandoe  <iains@gcc.gnu.org>
1291
1292         Based on the CFString implementation in FSF apple/trunk branch.
1293
1294         * objc/objc-act.c (objc_build_string_object): Handle CFStrings.
1295
1296 2010-10-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1297
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.
1322
1323 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1324
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.
1339
1340 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1341
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.
1345
1346         2006-01-27 Fariborz Jahanian <fjahanian@apple.com>
1347
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.
1357
1358 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1359
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.
1368
1369 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1370
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.
1375
1376 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1377
1378         * objc-act.c (lookup_and_install_protocols): Return NULL if passed
1379         error_mark_node.
1380
1381 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1382
1383         Merge from 'apple/trunk' branch on FSF servers.
1384
1385         2006-03-10  Fariborz Jahanian <fjahanian@apple.com>
1386
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.
1392
1393 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1394
1395         Merge from 'apple/trunk' branch on FSF servers.
1396
1397         2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
1398
1399         Radar 4330422
1400         * objc/objc-act.c (objc_non_volatilized_type): New
1401
1402         2005-10-07  Fariborz Jahanian <fjahanian@apple.com>
1403
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.
1411
1412 2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
1413
1414         Merge from 'apple/trunk' branch on FSF servers.
1415
1416         2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
1417
1418         Radar 4133425
1419         * objc-act.c (objc_diagnose_private_ivar): New.
1420
1421 2010-10-17  Iain Sandoe  <iains@gcc.gnu.org>
1422
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'.
1432
1433 2010-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1434
1435         merge from FSF apple 'trunk' branch.
1436         2006 Fariborz Jahanian <fjahanian@apple.com>
1437
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.
1477
1478 2010-10-13  Richard Henderson  <rth@redhat.com>
1479
1480         * objc-act.c (objc_eh_personality): Update call to
1481         build_personality_function.
1482
1483 2010-10-13  Iain Sandoe  <iains@gcc.gnu.org>
1484
1485         merge from FSF apple 'trunk' branch.
1486
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.
1497
1498 2010-10-07  Andi Kleen  <ak@linux.intel.com>
1499
1500         * Make-lang.in (cc1obj-dummy): Remove.
1501         (cc1obj-checksum): Change to run checksum over object files
1502         and options only.
1503
1504 2010-10-07  Nicola Pero  <nicola.pero@meta-innovation.com>
1505
1506         PR objc/45925
1507         * objc-act.c (objc_finish_foreach_loop): Convert return value of
1508         countByEnumeratingWithState:objects:count: to long unsigned int.
1509
1510 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1511
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.
1515
1516 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1517
1518         * objc-act.c (objc_build_message_expr):  Call mark_exp_read () to
1519         signal that the receiver has been used.
1520
1521 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1522
1523         * README: Obsolete file removed.
1524
1525 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1526
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.
1542
1543         Merge from 'apple/trunk' branch on FSF servers.
1544
1545         2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
1546
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.
1552
1553 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1554
1555         Merge from 'apple/trunk' branch on FSF servers.
1556
1557         2005-10-17  Fariborz Jahanian <fjahanian@apple.com>
1558
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.
1562
1563 2010-10-04  Andi Kleen <ak@linux.intel.com>
1564
1565         * Make-lang.in (cc1obj-dummy, cc1obj): Add + to build rule.
1566
1567 2010-09-30  Iain Sandoe  <iains@gcc.gnu.org>
1568
1569         merge from FSF 'apple/trunk' branch.
1570         2006-01-30  Fariborz Jahanian <fjahanian@apple.com>
1571
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.
1583
1584 2010-09-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1585
1586         Merge from 'apple/trunk' branch on FSF servers.
1587
1588         2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
1589
1590         Radar 4278236
1591         * objc-act.c (objc_declare_class): Pick the right
1592         type tree.
1593
1594 2010-09-29  Nicola Pero  <nicola.pero@meta-innovation.com>
1595
1596         Merge from 'apple/trunk' branch on FSF servers.
1597
1598         2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
1599
1600         Radar 4281748
1601         * objc-act.c (objc_check_global_decl): New
1602
1603 2010-09-29  Nicola Pero  <nicola.pero@meta-innovation.com>
1604
1605         * objc-act.c (objc_is_reserved_word): Removed.
1606
1607 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1608
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.
1614
1615 2010-09-28  Richard Henderson  <rth@redhat.com>
1616
1617         * objc-act.c (objc_eh_personality): Use targetm.except_unwind_info.
1618
1619 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1620
1621         * objc-act.c (objc_start_class_interface): Handle and ignore attributes.
1622         (objc_start_category_interface): Likewise.
1623         (objc_start_protocol): Likewise.
1624
1625 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1626
1627         Merge from 'apple/trunk' branch on FSF servers.
1628
1629         2005-08-23  Stuart Hastings <stuart@apple.com>
1630                     Ziemowit Laski  <zlaski@apple.com>
1631
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.
1637
1638 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1639
1640         * objc-act.c (encode_type): Fixed encoding enums with the next
1641         runtime.
1642
1643 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1644
1645         Merge from 'apple/trunk' branch on FSF servers.
1646
1647         2005-07-18  Ziemowit Laski  <zlaski@apple.com>
1648
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.
1653
1654 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1655
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'.
1660
1661 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1662
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.
1690
1691 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1692
1693         Merge from 'apple/trunk' branch on FSF servers.  I modified the
1694         changes to be used only when compiling for the NeXT runtime.
1695
1696         2005-10-10  Fariborz Jahanian <fjahanian@apple.com>
1697
1698         Radar 4301047
1699
1700         * objc-act.c (encode_type): Remove the hack.
1701
1702         2005-07-20  Ziemowit Laski  <zlaski@apple.com>
1703
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.
1708
1709 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1710
1711         Merge from 'apple/trunk' branch on FSF servers.
1712
1713         2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
1714
1715         Radar 4229905
1716         * objc-act.c (objc_have_common_types): New function.
1717
1718         2005-06-22  Ziemowit Laski  <zlaski@apple.com>
1719
1720         Radar 4154928
1721         * objc-act.c (objc_common_type): New function.
1722
1723 2010-09-27  Richard Guenther  <rguenther@suse.de>
1724
1725         * objc-act.c (objc_get_class_reference): Use CP_TYPE_CONTEXT.
1726         (objc_is_global_reference_p): Use DECL_FILE_SCOPE_P.
1727
1728 2010-09-26  Nicola Pero  <nicola.pero@meta-innovation.com>
1729
1730         * objc-act.c: Removed historical, obsolete comment at the top of
1731         the file.
1732
1733 2010-09-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1734
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.
1739
1740 2010-09-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1741
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.
1746
1747 2010-09-15  Nicola Pero  <nicola.pero@meta-innovation.com>
1748
1749         Merge from 'apple/trunk' branch on FSF servers.
1750
1751         2006-03-09 Fariborz Jahanian <fjahanian@apple.com>
1752
1753         Radar 4457381
1754         * objc/objc-act.c (objc_finish_message_expr): Look for message in
1755         @class's protocol list.
1756
1757         2006-02-07  Fariborz Jahanian <fjahanian@apple.com>
1758
1759         Radar 4219590
1760         * objc/objc-act.c (objc_start_method_definition): Initialize
1761         break/continue labels.
1762
1763         2005-08-22  Ziemowit Laski  <zlaski@apple.com>
1764
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.
1770
1771         2005-08-22  Ziemowit Laski  <zlaski@apple.com>
1772
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).
1777
1778 2010-09-10  Nicola Pero  <nicola.pero@meta-innovation.com>
1779
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.
1783
1784 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
1785
1786         * objc-act.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
1787
1788 2010-07-10  Iain Sandoe  <iains@gcc.gnu.org>
1789
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.
1826
1827 2010-07-03  Nathan Froyd  <froydnj@codesourcery.com>
1828
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.
1851
1852 2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
1853
1854         * objc-act.c: Do not include except.h.
1855
1856 2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1857
1858         * objc-act.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Use typed GC
1859         allocation.
1860
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.
1868
1869 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
1870
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/.
1874
1875 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
1876
1877         * objc-act.c (build_next_objc_exception_stuff): Give setjmp a
1878         varargs type instead of a zero-argument type.
1879
1880 2010-05-30  Nathan Froyd  <froydnj@codesourcery.com>
1881
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.
1887
1888 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
1889
1890         * objc-act.c: Include diagnostic-core.h instead of diagnostic.h.
1891         * Make-lang.in (objc/objc-act.o): Update dependencies.
1892
1893 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
1894
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.
1900
1901 2010-05-25  Nathan Froyd  <froydnj@codesourcery.com>
1902
1903         * objc-act.c (objc_build_constructor): Adjust OBJCPLUS impedance
1904         mismatch code for VECs.
1905
1906 2010-05-25  Nathan Froyd  <froydnj@codesourcery.com>
1907
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.
1928
1929 2010-04-30  Iain Sandoe  <iains@gcc.gnu.org>
1930
1931         PR objc++/32052
1932         * objc-act.c (encode_aggregate_within): Encode structure tags
1933         with template args for ObjC++.
1934
1935 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
1936
1937         * objc-act.c: Do not include varray.h.
1938
1939 2010-04-07  Jakub Jelinek  <jakub@redhat.com>
1940
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.
1945
1946 2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
1947
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.
1951
1952 2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
1953
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++.
1957
1958 2010-02-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1959             Mike Stump  <mikestump@comcast.net>
1960
1961         PR objc/43061
1962         * objc-act.c (finish_var_decl): Set the generated symbols as "used".
1963
1964 2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
1965
1966         * objc-act.c (objc_substitute_decl, build_ivar_reference,
1967         get_super_receiver): Update build_indirect_ref calls.
1968
1969 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
1970
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.
1976
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.
1980
1981 2009-09-14  Jan Hubicka  <jh@suse.cz>
1982
1983         * objc-act.c (objc_add_static_instance): Do not set DECL_COMMON.
1984
1985 2009-09-14  Richard Henderson  <rth@redhat.com>
1986
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.
1990
1991 2009-09-13  Richard Guenther  <rguenther@suse.de>
1992         Rafael Avila de Espindola  <espindola@google.com>
1993
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.
2004
2005 2009-09-03  Diego Novillo  <dnovillo@google.com>
2006
2007         * objc-lang.c (lang_hooks): Remove const qualifier.
2008
2009 2009-08-20  Richard Guenther  <rguenther@suse.de>
2010
2011         * objc-act.c: Include c-lang.h
2012         * Make-lang.in (objc/objc-act.o): Add c-lang.h dependency.
2013
2014 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
2015             Manuel López-Ibáñez  <manu@gcc.gnu.org>
2016
2017         PR 40435
2018         * objc-act.c: Add location argument to all calls to
2019         build_fold_addr_expr.
2020
2021 2009-07-14  Taras Glek  <tglek@mozilla.com>
2022             Rafael Espindola  <espindola@google.com>
2023
2024         * Make-lang.in (objc.install-plugin): New target for
2025         installing plugin headers.
2026
2027 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2028
2029         * objc-act.c (next_sjlj_build_catch_list): Replace EXPR_LOCUS by
2030         EXPR_LOCATION.
2031
2032 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2033
2034         * objc-act.c: Replace %J by an explicit location. Update all
2035         calls.
2036
2037 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2038
2039         * objc-act.c: Replace %H by an explicit location. Update all
2040         calls.
2041
2042 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
2043
2044         PR objc/28050
2045         * objc-act.c (objc_build_message_args): Return if ARGS is the
2046         error_mark_node.
2047
2048 2009-06-19  Ian Lance Taylor  <iant@google.com>
2049
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.
2055
2056 2009-06-15  Ian Lance Taylor  <iant@google.com>
2057
2058         * objc-act.c (objc_start_function): Don't set
2059         label_context_stack_se or label_context_stack_vm.
2060
2061 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
2062
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.
2088
2089 2009-06-09  Ian Lance Taylor  <iant@google.com>
2090
2091         * objc-act.c (objc_gimplify_expr): Change return type to int.
2092         * objc-act.h: Update declaration.
2093
2094 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
2095
2096         * objc-act.c (objc_init): Skip print_struct_values during
2097         -fcompare-debug-second.
2098
2099 2009-06-03  Ian Lance Taylor  <iant@google.com>
2100
2101         * Make-lang.in (cc1obj-checksum.o): Depend upon $(CONFIG_H) and
2102         $(SYSTEM_H).
2103
2104 2009-05-27  Ian Lance Taylor  <iant@google.com>
2105
2106         * Make-lang.in (cc1obj-dummy$(exeext)): Change $(COMPILER) to
2107         $(LINKER).
2108         (cc1obj$(exeext)): Likewise.
2109
2110 2009-05-26  Ian Lance Taylor  <iant@google.com>
2111
2112         * Make-lang.in (cc1obj-dummy$(exeext)): Use $(COMPILER).
2113         (cc1obj$(exeext)): Likewise.
2114
2115 2009-05-20  Ian Lance Taylor  <iant@google.com>
2116
2117         * objc-act.c (objc_generate_cxx_ctor_or_dtor): Pass NULL rather
2118         than NULL_TREE to build_special_member_call.
2119
2120 2009-05-10  Ian Lance Taylor  <iant@google.com>
2121
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.
2139
2140 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2141
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.
2161
2162 2009-04-27  Ian Lance Taylor  <iant@google.com>
2163
2164         * objc-act.c (objc_gimplify_expr): Add casts to enum type.
2165
2166 2009-04-24  Ian Lance Taylor  <iant@google.com>
2167
2168         * objc-act.c (get_super_receiver): Update calls to
2169         build_modify_expr to pass new argument.
2170
2171 2009-04-21  Taras Glek <tglek@mozilla.com>
2172
2173         * objc-act.c: Update GTY annotations to new syntax
2174         * objc-act.h: Likewise
2175
2176 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
2177
2178         * ChangeLog: Add copyright and license notices.
2179
2180 2009-04-20  Ian Lance Taylor  <iant@google.com>
2181
2182         * objc-act.c (objc_rewrite_function_call): Change parameter from
2183         params to first_param.  Change all callers.
2184
2185 2009-03-30  Dominique d'Humieres  <dominiq@lps.ens.fr>
2186
2187         PR bootstrap/39583
2188         * objc-act.c (in_late_binary_op): Define for Objective-C++.
2189
2190 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
2191
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.
2199
2200 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
2201
2202         PR bootstrap/38262
2203         * Make-lang.in (cc1obj-dummy, cc1obj): Add BACKENDLIBS,
2204         remove GMPLIBS.
2205
2206 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2207
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.
2231
2232 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2233
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.
2238
2239 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2240
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.
2245
2246 2008-09-17  Jan Hubicka  <jh@suse.cz>
2247
2248         PR c++/18071
2249         * objc/objc-act.c (objc_finish_method_definition): Do not set
2250         DECL_INLINE.
2251
2252 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
2253
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.
2260
2261 2008-07-28  Richard Guenther  <rguenther@suse.de>
2262
2263         Merge from gimple-tuples-branch.
2264
2265         2008-07-18  Aldy Hernandez  <aldyh@redhat.com>
2266
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.
2271
2272         2007-11-10  Aldy Hernandez  <aldyh@redhat.com>
2273
2274         * objc-act.c (objc_gimplify_expr): Change pre and post to sequences.
2275         * objc-act.h (objc_gimplify_expr): Change prototype accordingly.
2276
2277 2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2278
2279         * objc-act.c: Fix comment typos.
2280
2281 2008-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2282
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.
2290
2291 2008-07-14  Jason Merrill  <jason@redhat.com>
2292
2293         PR objc++/36723
2294         * objc-act.c (objc_build_constructor): Update C++ tweak.
2295
2296 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
2297
2298         * objc-act.c (synth_module_prologue): Use TREE_NO_WARNING instead
2299         of DECL_IN_SYSTEM_HEADER.
2300
2301 2008-07-11  Ian Lance Taylor  <iant@google.com>
2302
2303         * objc-act.c (objc_is_reserved_word): Always check for RID_CLASS,
2304         etc., not just when OBJCPLUS is defined.
2305
2306 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2307
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.
2312
2313 2008-05-12  Tomas Bily  <tbily@suse.cz>
2314
2315         * objc-act.c (objc_generate_write_barrier, objc_finish_message_expr):
2316         Use CONVERT_EXPR_P.
2317
2318 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2319
2320         * objc-act.c (objc_build_string_object): Don't set TREE_INVARIANT.
2321
2322 2008-04-03  Tom Tromey  <tromey@redhat.com>
2323
2324         * Make-lang.in (objc_OBJS): New variable.
2325
2326 2008-03-27  Tom Tromey  <tromey@redhat.com>
2327
2328         * Make-lang.in: Revert automatic dependency patch.
2329
2330 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2331
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.
2337
2338 2008-03-25  Andrew Pinski  <pinskia@gmail.com>
2339
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.
2343
2344 2008-03-25  Tom Tromey  <tromey@redhat.com>
2345
2346         * Make-lang.in (objc_OBJS): New variable.
2347         (cc1obj-checksum.o, objc/objc-lang.o, objc/objc-act.o): Remove.
2348
2349 2008-03-21  Andreas Tobler  <a.tobler@schweiz.org>
2350
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.
2356
2357 2008-02-26  Tom Tromey  <tromey@redhat.com>
2358
2359         * objc-act.c (objc_init): Remove old location code.
2360
2361 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2362
2363         PR other/35107
2364         * Make-lang.in (cc1obj-dummy, cc1obj): Add $(GMPLIBS).
2365
2366 2007-07-30  Nick Clifton  <nickc@redhat.com>
2367
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.
2373
2374 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2375
2376         * objc-act.c (objc_get_callee_fndecl): Constify.
2377         * objc-act.h (objc_get_callee_fndecl): Likewise.
2378
2379 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2380
2381         * objc-act.c (volatilized_hash, volatilized_eq, string_hash,
2382         string_eq): Constify.
2383
2384 2007-04-04  Stuart Hastings  <stuart@apple.com>
2385
2386         PR 31281
2387         * objc/objc-act.c (next_sjlj_build_catch_list): Delete volatile from rethrow decl.
2388
2389 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2390
2391         * Make-lang.in: Add dummy lang.install-pdf target.
2392
2393 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2394
2395         * objc/objc-act.c: Fix comment typos.
2396
2397 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2398             Brooks Moses  <brooks.moses@codesourcery.com>
2399             Lee Millward  <lee.millward@codesourcery.com>
2400
2401         * objc-act.c (receiver_is_class_object): Use new CALL_EXPR accessors.
2402         (objc_get_callee_fndecl): Likewise.
2403
2404 2007-01-23  Andrew Pinski  <pinskia@gmail.com>
2405
2406         PR objc/27438
2407         * objc-act.c (objc_add_static_instance): Mark the decl as
2408         TREE_USED.
2409
2410 2007-01-20  Andrew Pinski  <pinskia@gmail.com>
2411
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.
2417
2418 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
2419
2420         * objc-act.c (objc_build_volatilized_type): Keep track of
2421         canonical types.
2422         (objc_get_protocol_qualified_type): Ditto.
2423
2424 2006-11-02  Andreas Tobler  <a.tobler@schweiz.org>
2425
2426         * objc-act.c (objc_finish_file): Remove ifdef clause for OBJCPLUS and
2427         content where we called cp_finish_file.
2428
2429 2006-10-23 Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2430
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.
2437
2438 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
2439
2440         * Make-lang.in: Added empty "objc.pdf" target.
2441
2442 2006-09-26  Andrew Pinski  <pinskia@physics.uc.edu>
2443
2444         PR objc/29195
2445         * objc-act.c (objc_push_parm): If we change the type of the
2446         decl, relayout the decl.
2447
2448 2006-09-19  Eric Christopher  <echristo@apple.com>
2449
2450         * objc-act.c (JBLEN): Rename to OBJC_JBLEN,
2451         default to something innocuous.
2452         (build_next_objc_exception_stuff): Rename JBLEN.
2453
2454 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2455
2456         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2457
2458 2006-07-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2459
2460         PR obj-c++/28434
2461         * objc-act.c (lookup_and_install_protocols): Skip error_mark_nodes.
2462
2463 2006-06-06  Mike Stump  <mrs@apple.com>
2464
2465         * objc-act.c: Remove prototype for objc_build_volatilized_type.
2466
2467 2006-05-24  Mike Stump  <mrs@apple.com>
2468
2469         * objc-act.c (build_next_objc_exception_stuff): Use JBLEN instead of _JBLEN.
2470
2471 2006-05-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2472
2473         PR objc/27240
2474         * objc-act.c (objc_is_public): Return early on invalid type.
2475
2476 2006-03-02 Fariborz Jahanian <fjahanian@apple.com>
2477
2478         * objc-act.c (init_module_descriptor): Remove file name from
2479         module descriptor.
2480         (gen_type_name_0): Fix ICE when issuing warning.
2481
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
2487
2488 2005-12-14  Andrew Pinski  <pinskia@physics.uc.edu>
2489
2490         PR objc/25360
2491         * objc/objc-act.c (encode_type): Encode Complex types as 'j' followed
2492         by the inner type.
2493
2494 2005-12-12  Andrew Pinski  <pinskia@physics.uc.edu>
2495
2496         PR objc/25348
2497         * objc-act.c (encode_array): Handle arrays to zero sized types.
2498
2499 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2500
2501         * Make-lang.in (objc.all.build, objc.install-normal): Remove.
2502
2503 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2504
2505         * Make-lang.in: Remove all dependencies on s-gtype.
2506
2507 2005-12-02  Richard Guenther  <rguenther@suse.de>
2508
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.
2514
2515 2005-10-20  Geoffrey Keating  <geoffk@apple.com>
2516
2517         * objc-act.c (synth_module_prologue): Clear TREE_NOTHROW
2518         on objc_msgSend and like builtin functions.
2519
2520 2005-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2521
2522         * objc-act.c (objc_build_component_ref): Adjust call to
2523         finish_class_member_access_expr due to a changed prototype.
2524
2525 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
2526
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.
2532
2533 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
2534
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.
2538
2539 2005-08-09  Andrew Pinski  <pinskia@physics.uc.edu>
2540
2541         part of PR objc/21992
2542         * objc-act.c (handle_class_ref): The ref decl is always referenced.
2543
2544 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
2545
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.
2549
2550 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
2551
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.
2563
2564 2005-07-07  Ziemowit Laski  <zlaski@apple.com>
2565
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().
2572
2573 2005-07-07  Ziemowit Laski  <zlaski@apple.com>
2574
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.
2578
2579 2005-07-03  Kazu Hirata  <kazu@codesourcery.com>
2580
2581         * Make-lang.in (cc1plus-checksum.c): Use
2582         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
2583
2584 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2585
2586         * objc-act.c: Use %q to quote in diagnostics.
2587
2588 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2589
2590         * objc-act.c: Use '+' flag instead of %J.  Use 'q' flag for
2591         quoting.
2592
2593 2005-06-30  Ziemowit Laski  <zlaski@apple.com>
2594
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().
2598
2599 2005-06-29  Ziemowit Laski  <zlaski@apple.com>
2600
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.
2610
2611 2005-06-28  Paul Brook  <paul@codesourcery.com>
2612
2613         * objc-act.c (objc_init_exceptions): Call
2614         default_init_unwind_resume_libfunc.
2615
2616 2005-06-27  Ziemowit Laski  <zlaski@apple.com>
2617
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.
2622
2623 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
2624
2625         * all files: Update FSF address in copyright headers.
2626
2627 2005-06-15  Joseph S. Myers  <joseph@codesourcery.com>
2628
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.
2633
2634 2005-05-25  Mike Stump  <mrs@mrs.kithrup.com>
2635
2636         * objc-act.c (volatilized_hash): Avoid warnings on 64-bit
2637         machines.
2638
2639 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
2640
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.
2681
2682 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
2683
2684         * Make-lang.in (cc1obj-dummy): New.
2685         (cc1obj-checksum.c): New.
2686         (cc1obj-checksum.o): New.
2687         (cc1obj): Add cc1obj-checksum.o.
2688
2689 2005-05-18  Mike Stump  <mrs@apple.com>
2690
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.
2694
2695 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
2696             Mike Stump  <mrs@apple.com>
2697
2698         Yet more Objective-C++...
2699
2700         * objc-act.c (objc_finish_try_stmt): Add return value.
2701         (objc_build_synchronized): Likewise.
2702
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.
2731
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.
2803
2804 2005-04-23  DJ Delorie  <dj@redhat.com>
2805
2806         * objc-act.c: Adjust warning() callers.
2807
2808 2005-04-21  Roger Sayle  <roger@eyesopen.com>
2809
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.
2819
2820 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
2821
2822         PR c/12913
2823         * objc-act.c (objc_start_function): Create stack level for context
2824         of identifiers with variably modified type.
2825
2826 2005-03-30  Joseph S. Myers  <joseph@codesourcery.com>
2827
2828         PR c/772
2829         PR c/17913
2830         * objc-act.c (objc_start_function): Push context on
2831         label_context_stack.
2832
2833 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
2834
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.
2838
2839 2005-02-25  Joseph S. Myers  <joseph@codesourcery.com>
2840
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.
2846
2847 2005-01-29  Kazu Hirata  <kazu@cs.umass.edu>
2848
2849         * lang-specs.h, objc-act.c, objc-act.h, objc-lang.c: Update
2850         copyright.
2851
2852 2005-01-27  Matt Austern  <austern@apple.com>
2853
2854         * objc-act.c (objc_finish_file): In ObjC++ mode, set at_eof before
2855         calling instantiate_pending_templates.
2856
2857 2005-01-26  Alexander Malmberg  <alexander@malmberg.org>
2858
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.
2863
2864 2005-01-25  Alexander Malmberg  <alexander@malmberg.org>
2865
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.
2870
2871 2005-01-16  Ziemowit Laski  <zlaski@apple.com>
2872
2873         * objc-act.c (objc_push_parm): Call c_type_promotes_to()
2874         via a lang-hook.
2875
2876 2005-01-15  Ziemowit Laski  <zlaski@apple.com>
2877
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.
2888
2889 2005-01-14  Mike Stump  <mrs@apple.com>
2890
2891         * lang-specs.h ("@objective-c"): Use cc1obj when -E is used so
2892         that -fobjc-exceptions is accepted.
2893
2894 2004-12-30  Ziemowit Laski  <zlaski@apple.com>
2895
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.
2900
2901 2004-12-15  Ziemowit Laski  <zlaski@apple.com>
2902
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.
2943
2944 2004-11-29  Joseph Myers  <joseph@codesourcery.com>
2945
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.
2950
2951 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
2952
2953         PR objc/18406
2954         * obj-act.c (encode_type): 96bits doubles are encoded the
2955         same way as 64bit and 128bit doubles are.
2956
2957 2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>
2958
2959         * objc-act.c: Use %q, %< and %> for quoting in diagnostics.
2960
2961 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
2962
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.
2968
2969 2004-10-30  Ziemowit Laski  <zlaski@apple.com>
2970
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.
2976
2977 2004-10-26  Ziemowit Laski  <zlaski@apple.com>
2978
2979         * objc-act.c (finish_class): Do not synthesize bogus
2980         'extern objc_object *_Foo;' declarations for @interface Foo.
2981
2982 2004-10-25  Ziemowit Laski  <zlaski@apple.com>
2983             David Ayers  <d.ayers@inode.at>
2984
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>'.
3000
3001 2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>
3002
3003         PR objc/17923
3004         * objc-act.c (objc_build_string_object): Create a CONST_DECL
3005         for the NeXT runtime case.
3006
3007 2004-10-02  Kazu Hirata  <kazu@cs.umass.edu>
3008
3009         * objc-act.c: Fix comment typos.
3010
3011 2004-09-24  Ziemowit Laski  <zlaski@apple.com>
3012
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'.
3016
3017 2004-09-24  Zack Weinberg  <zack@codesourcery.com>
3018
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.
3024
3025 2004-09-21  Ziemowit Laski  <zlaski@apple.com>
3026
3027         * objc-act.c (objc_fold_objc_type_ref): New function.
3028         * objc-act.h (objc_fold_objc_type_ref): New prototype.
3029
3030 2004-09-09  Joseph S. Myers  <jsm@polyomino.org.uk>
3031
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.
3035
3036 2004-09-07  Ziemowit Laski  <zlaski@apple.com>
3037
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.
3290
3291 2004-09-03  Ziemowit Laski  <zlaski@apple.com>
3292
3293         * config-lang.in: Update copyright notice.
3294         (lang_requires): Indicate that ObjC requires C to be built first.
3295
3296 2004-09-01  Ziemowit Laski  <zlaski@apple.com>
3297
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().
3319
3320 2004-09-01  Ziemowit Laski  <zlaski@apple.com>
3321
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.
3331
3332 2004-08-28  Ziemowit Laski  <zlaski@apple.com>
3333
3334         * objc-act.c (objc_is_reserved_word): New function.
3335
3336 2004-08-15  Ziemowit Laski  <zlaski@apple.com>
3337
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.
3373
3374 \f
3375 Copyright (C) 2004-2013 Free Software Foundation, Inc.
3376
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.