OSDN Git Service

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